当前位置: 首页 > 知识库问答 >
问题:

尝试使用aspectJ从Spring Data JPA存储库中建议一种方法

从光启
2023-03-14

我试图定义一个切入点,其建议将在调用Spring Data JPA存储库中的方法时运行。

这是我的匿名切入点以及内联建议(来自PliEventManagerAspect):

after(Pli pli) returning: (execution(* org.springframework.data.repository.CrudRepository+.save(Pli)) && args(pli)){
    System.out.println("Caught!!!!");   
}

这里是我的PliRepository的定义:

public interface PliRepository extends GlobalRepository<Pli, Long>, PliRepositoryCustom {

和PliRepositoryImpl:

public class PliRepositoryImpl extends QueryDslRepositorySupport implements PliRepositoryCustom {

和PliRepositoryCustom:

public interface PliRepositoryCustom {

最后是GlobalRepository:

@NoRepositoryBean
public interface GlobalRepository<T, ID extends Serializable> extends JpaRepository<T, ID> {

我还设置了javaagent命令行arg。我有以下aop。xml:

<!DOCTYPE aspectj PUBLIC
"-//AspectJ//DTD//EN"
"http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
    <weaver options="-verbose">
        <include within="org.springframework.data.repository..*"/>
    </weaver>
    <aspects>
        <aspect name="trc.suivi.aspects.PliEventManagerAspect" />
    </aspects>
</aspectj>

上面的建议应该在LTW中运行,因为它是在jar中建议一个类,根本没有运行。。。我确信我必须在切入点定义中犯一些错误。有人能帮忙吗?

共有1个答案

劳彦
2023-03-14

我更改为以下配置:

aop.xml:

<!DOCTYPE aspectj PUBLIC
"-//AspectJ//DTD//EN"
"http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
    <weaver options="-verbose"></weaver>
    <aspects>
        <aspect name="trc.suivi.aspects.PliEventManagerAspect" />
    </aspects>
</aspectj>

因此,编织者扫描所有类。

PliEventManagerAspect.aj:

after(Pli pli) returning: (execution(* org.springframework.data.repository.CrudRepository+.save(*)) && args(pli)){
        log.debug("Caught!!!!");  
    }

现在它可以工作了(多亏了来自Spring论坛的Marten)。

 类似资料:
  • 我正在使用100个实体(使用JHipster)设置一个新的Spring Boot API,我的问题是:鉴于我有一组存储库层方法,我希望我的所有存储库都能够调用这些方法。 我已经尝试制作所有接口来扩展('RepositoryQuery'是我默认的自定义接口名称后缀),然后使用特定于实体的类。请注意,所有的类扩展了一个泛型实现类,名为。 请注意,给定正则表达式中的“.*”代表我的持久实体集中的任何实体

  • 使用laravel 7/livewire应用程序,我使用Repository制作crud,并获得了数据列表,在装载事件中,我分配了受保护的var$FacilityRepository,它在render方法中正常工作, 但在编辑方法中为空,我得到错误: 当用户单击“编辑链接”时 在模板中,编辑链接定义为: 为什么会出现错误以及如何修复? 修改#2: > 类设施扩展组件{...公共$FacilityR

  • 我试图创建一些切入点和之前的建议为存储库,以便能够在Spring启动的Spring数据中过滤一些存储库的实体管理器。我在项目中也有Web和服务层,AounLogging适用于两者。但是我不能为存储库做同样的事情。我已经挣扎了2天,我尝试了很多东西来修复它。我几乎阅读了关于此的每个文档、问题和线程(代理问题CGlib和JDK代理等)。我使用jhipster创建项目。 除了@Pointcut和Crud

  • 我有一个Spring Boot应用程序,注释为。几乎所有的存储库都需要实现一些自定义逻辑,这是使用完成的。 是否有方法创建将从机制中排除的存储库?

  • 问题内容: 我有一个使用JDBC与Java应用程序服务器通信的数据库服务器。我想将数据库ResultSet中的数据存储到Java变量中。 这是我的Java类HRPeople: 我目前使用此类存储ResultSet中的数据,如下所示: 上述情况的问题在于,原始数组要求我知道ResultSet中的行数,以便我可以正确地初始化这些数组。所以我想做的是使用ArrayList代替。我将如何修改上述方案来做到

  • 根据多租户数据架构的帖子,有3种方法可以实现多租户 > 独立数据库 共享数据库,独立模式 共享数据库,共享模式 我有以下细节: > 用户应该能够备份和恢复他们的数据。 租户数量: 3(约) 每个租户可能属于不同的域(url)。 这里有一些供所有租户共用的桌子。 每个租户中的表数: 10(初始) 我想知道哪种方法更适合我?