大家好,我在使用 Spring MVC,我有一个问题。我有这个交易的bean定义:<tx:annotation-driven transaction-manager="txManager"/> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean>但是当我运行我的应用程序时,我遇到了这个异常:2019-05-24 18:14:51 DEBUG osbdLoggingFailureAnalysisReporter - 由于异常 org.springframework.beans.factory.support.BeanDefinitionOverrideException,应用程序无法启动:定义了名称为“org.springframework.transaction.config.internalTransactionAdvisor”的无效 bean 定义在类路径资源 [org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class] 中:无法注册 bean 定义 [Root bean: class [null]; 范围=; 摘要=假;懒惰初始化=假;自动接线模式=3;依赖检查=0;autowireCandidate=真;初级=假;factoryBeanName=org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration; factoryMethodName=交易顾问;初始化方法名=空;destroyMethodName=(推断);在类路径资源 [org/springframework/transaction/annotation/ProxyTransactionManagementConfiguration.class]] 中为 bean 'org.springframework.transaction.config.internalTransactionAdvisor' 定义:已经有 [Root bean: class [org.springframework.transaction.interceptor. BeanFactoryTransactionAttributeSourceAdvisor]; 范围=; 摘要=假;懒惰初始化=假;自动接线模式=0;依赖检查=0;autowireCandidate=真;初级=假;工厂BeanName=null;工厂方法名=空;初始化方法名=空;destroyMethodName=null] 绑定。在 org.springframework.beans.factory.support.DefaultListableBeanFactory.registerBeanDefinition(DefaultListableBeanFactory.java:897) 在 org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader。当我评论 tx:annotation-drive 时,一切正常,但带有 @Transactional 注释的方法不起作用。我究竟做错了什么?我的 gradle 依赖项:compile group: 'org.springframework', name: 'spring-web', version: '5.1.5.RELEASE' compile group: 'org.springframework', name: 'spring-webmvc', version: '5.1.5.RELEASE' compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.1.3.RELEASE'compile group: 'org.springframework', name: 'spring-jdbc', version: '5.1.5.RELEASE'
1 回答

哆啦的时光机
TA贡献1779条经验 获得超6个赞
您需要做的是启用Bean Overriding
. 从 Spring 2.1 开始,默认情况下禁用此功能。你得到一个异常,因为已经有一个用相同名称定义的 bean。
Spring 2.1 发行说明摘录:发行说明 2.1 - Bean Overriding
长话短说,您需要将其添加到您的application.properties
文件中:
spring.main.allow-bean-definition-overriding=true
或者在 yaml 中:
spring: main: allow-bean-definition-overriding: true
添加回答
举报
0/150
提交
取消