Spring AOP + JPARepository

时间:2017-09-05 03:20:28

标签: spring spring-data-jpa aop aspectj

我在我的项目中使用Spring Data。所以,我只需要从某些实体拦截一些方法(保存和删除)。我尝试为自己的存储库接口配置切入点,但没有成功。这些方法没有被截获。

所以,我发现了一个尝试将Spring CrudRepository接口用于我的dotcup的解决方案。

@Aspect
@Component
@Configurable
public class AuditLogAspect {

   @Pointcut("execution(* org.springframework.data.repository.CrudRepository+.save(*)) || " +
              "execution(* org.springframework.data.repository.CrudRepository+.saveAndFlush(*))")
    public void whenSaveOrUpdate() {};

   @Pointcut("execution(* org.springframework.data.repository.CrudRepository+.delete(*))")
   public void whenDelete() {};

   @Before("whenSaveOrUpdate() && args(entity)")
   public void beforeSaveOrUpdate(JoinPoint joinPoint, BaseEntity entity) {...}
}

这是一个很好的方法!拦截器成功执行!但我的情况有点不同。我有大约20个接口从Spring Data扩展JPARepository接口,然后我需要拦截其中的15个。其他的,我不能。

因此,我的问题是:有没有办法拦截我自己的接口的某些方法,这些方法使用AOP或其他任何东西从Spring Data扩展JPARepository接口?

提前感谢您的帮助!

0 个答案:

没有答案