大家好,我在使用 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
提交
取消