首先我遇到了交易不能正常工作的问题,所以我将配置从@EnableTransactionManagement
更新为@EnableTransactionManagement(proxyTargetClass=true)
,但在更新后,这个错误在启动时被抛出。
在评论与AspectJ相关的所有代码后,错误消失,事务处理完美,但我缺少AspectJ函数。
我试图将@EnableTransactionManagement(proxyTargetClass=true)
替换为@EnableTransactionManagement(mode=AdviceMode.PROXY)
和@EnableTransactionManagement @EnableLoadTimeWeaving
,他们都没有让我使用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;
}
}
答案 0 :(得分:2)
故事的道德是永远不要在同一个类中混合交易和AspectJ功能,我已经了解到,交易在其内部AOP使用的方式很难,它的AOP不能很好地与用户AOP。