Caused by: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean

這個問題整到 凌晨1:36,網上搜了很多個文章,解決方案都不對。有的都在亂說。

這類問題很多都是英文文章,沒見說明白的,中文解決方案几乎沒有。


另外也看到了類似的問題,其實這個問題就是重複掃描了。

# # 問題描述

Caused by: org.springframework.beans.factory.support.BeanDefinitionOverrideException: Invalid bean definition with name 'dataSource' defined in class path resource [org/apache/shardingsphere/shardingjdbc/spring/boot/SpringBootConfiguration.class]: Cannot register bean definition [Root bean: class [null]; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.apache.shardingsphere.shardingjdbc.spring.boot.SpringBootConfiguration; factoryMethodName=dataSource; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/apache/shardingsphere/shardingjdbc/spring/boot/SpringBootConfiguration.class]] for bean 'dataSource': There is already [Root bean: class [null]; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; factoryMethodName=dataSource; initMethodName=init; destroyMethodName=(inferred); defined in class path resource [com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class]] bound.

 

# # 報錯場景

 正常的使用 Druid 數據連接池沒有問題,我在使用springboot 整合 sharding-jdbc 的時候出現的這個錯誤。

 

# # 錯誤原因

  仔細分析,SpringBoot本身具有自動配置,現在自動配置時發生衝突了,那麼我們可以將衝突的部分排除掉,即告訴SpringBoot,某個類不用幫我自動配置了,這裏我們將Druid的關於數據源的配置排除掉。

 

# # 解決方案

  在主啓動類上添加:

exclude={DruidDataSourceAutoConfigure.class}

 

 問題解決。

 

# # 其他的問題也是類似的

  只要看到紅框裏邊的錯誤類型,導致的項目不能啓動,按照上邊的解決方式替換綠色框的內容即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章