今天在跑程序的时候报了一个重复创建事务的异常:
***************************
APPLICATION FAILED TO START
***************************Description:
The bean 'org.springframework.transaction.config.internalTransactionAdvisor', defined in class path resource [org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class], could not be registered. A bean with that name has already been defined and overriding is disabled.
Action:
Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true
是ProxyTransactionManagementConfiguration.class这个bean在创建时重复了,springboot的自动装配和我的程序同时创建了相同类型的bean。之所以报这个异常是因为在Spring2中增加了防止bean重复覆盖的策略,如果有重复则会直接报出异常,而不是像从前一样默默覆盖,导致你的bean被莫名替换,难以排查问题。stackoverflow上的解答如下:

我这边程序的解决方案是忽略spring的自动装配,禁止TransactionAutoConfiguration即可:
@SpringBootApplication(exclude = TransactionAutoConfiguration.class)
本文详细解析了在Spring Boot环境下遇到的重复创建事务Bean异常问题,具体表现为无法注册'org.springframework.transaction.config.internalTransactionAdvisor' Bean,因为已存在同名Bean。文章提供了禁用TransactionAutoConfiguration的解决方案,避免自动装配冲突。

2633

被折叠的 条评论
为什么被折叠?



