Spring 引导中的事务配置后 AspectJ 不工作

AspectJ not working after Transaction configuration in Spring Boot

首先,我遇到了交易不工作的问题,所以我将配置从 @EnableTransactionManagement 更新为 @EnableTransactionManagement(proxyTargetClass=true),但更新后这个错误在启动时抛出。

在评论了与 AspectJ 相关的所有代码后,错误消失了,事务工作正常,但我缺少我的 AspectJ 函数。

我尝试用 @EnableTransactionManagement(mode=AdviceMode.PROXY)@EnableTransactionManagement @EnableLoadTimeWeaving 替换 @EnableTransactionManagement(proxyTargetClass=true),其中 none 让我使用 AspectJ,使用调试器我可以看到建议根本没有执行。

AppConfig.java

@EnableAutoConfiguration
@ComponentScan(basePackages = { "com.geopro" })
@EnableJpaRepositories(basePackages = { "com.geopro.repositories" })
@EntityScan(basePackages = { "com.geopro.entities" })
@EnableTransactionManagement(proxyTargetClass=true)//(mode=AdviceMode.ASPECTJ)//
public class AppConfig {
    @Bean
    public HibernateJpaSessionFactoryBean sessionFactory(EntityManagerFactory emf) {
         HibernateJpaSessionFactoryBean factory = new HibernateJpaSessionFactoryBean();
         factory.setEntityManagerFactory(emf);
         return factory;
    }
}

这个故事的寓意是永远不要在同一个 class 中混合使用事务和 AspectJ 函数,我了解到事务在其内部 AOP 中使用的困难方法,它的 AOP 不能很好地与用户 AOP 配合使用。