Spring報(bào)錯(cuò):Error creating bean with name的問(wèn)題及解決
解決Spring報(bào)錯(cuò):Error creating bean with name
在使用springboot構(gòu)建 oltu-oauth的時(shí)候啟動(dòng)項(xiàng)目報(bào)錯(cuò)
在網(wǎng)上找一下沒(méi)找到 ,之前項(xiàng)目對(duì)比發(fā)現(xiàn)忘記在WebApplication中少加了個(gè)注解
加上之后問(wèn)題解決,查了下這個(gè)注解(橫線以下是對(duì)@MapperSecan的介紹):
之前是,直接在Mapper類上面添加注解@Mapper,這種方式要求每一個(gè)mapper類都需要添加此注解,麻煩。
通過(guò)使用@MapperScan可以指定要掃描的Mapper類的包的路徑,比如:
@SpringBootApplication @MapperScan("com.lz.water.monitor.mapper") // 添加對(duì)mapper包掃描 public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
同時(shí),使用@MapperScan注解多個(gè)包
@SpringBootApplication @MapperScan({"com.kfit.demo","com.kfit.user"}) public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }
如果如果mapper類沒(méi)有在Spring Boot主程序可以掃描的包或者子包下面,可以使用如下方式進(jìn)行配置
@SpringBootApplication @MapperScan({"com.kfit.*.mapper","org.kfit.*.mapper"}) public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); } }
導(dǎo)入seata報(bào)錯(cuò):Error creating bean with name ‘dataSourceProxyConfig‘
先去找配置的 registry.conf和file.conf有沒(méi)有問(wèn)題,如果沒(méi)有問(wèn)題那么就是你yml中配置了數(shù)據(jù)源
?datasource: ? ? driver-class-name: com.mysql.jdbc.Driver ? ? url: jdbc:mysql://localhost:3306/gift_auth ? ? username: root ? ? password: xxx
同時(shí)在你這個(gè)服務(wù)中又配置了數(shù)據(jù)源 這里可以是mybatis-plus版也可以是mybatis版,導(dǎo)致和yml中配置的數(shù)據(jù)源沖突了。
package com.wangling.config; import com.alibaba.druid.pool.DruidDataSource; import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean; import io.seata.rm.datasource.DataSourceProxy; import org.mybatis.spring.transaction.SpringManagedTransactionFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import javax.sql.DataSource; @Configuration public class DataSourceConfiguration { ? ? //mapper.xml路徑 ? ? @Value("${mybatis-plus.mapper-locations}") ? ? private String mapperLocations; ? ? //手動(dòng)配置bean ? ? @Bean ? ? @ConfigurationProperties("spring.datasource") ? ? public DataSource druidDataSource(){ ? ? ? ? return new DruidDataSource(); ? ? } ? ? @Bean ? ? public MybatisSqlSessionFactoryBean sqlSessionFactoryBean(DataSourceProxy dataSourceProxy) throws Exception { ? ? ? ? //處理MybatisPlus ? ? ? ? MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean(); ? ? ? ? factory.setDataSource(dataSourceProxy); ? ? ? ? factory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations)); ? ? ? ? //事務(wù)管理工廠 ? ? ? ? factory.setTransactionFactory(new SpringManagedTransactionFactory()); ? ? ? ? return factory; ? ? } ? ? @Bean ? ? public DataSourceProxy dataSource() { ? ? ? ? return new DataSourceProxy(druidDataSource()); ? ? } }
所以在自定義配置源里面加入@Primary 默認(rèn)自定義配置先啟動(dòng)
package com.wangling.config; import com.alibaba.druid.pool.DruidDataSource; import com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean; import io.seata.rm.datasource.DataSourceProxy; import org.mybatis.spring.transaction.SpringManagedTransactionFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import javax.sql.DataSource; @Configuration public class DataSourceConfiguration { ? ? //mapper.xml路徑 ?這里如果是mybatis就把mybatis-plus修改了同時(shí)修改yml中的配置 ? ? @Value("${mybatis-plus.mapper-locations}") ? ? private String mapperLocations; ? ? //手動(dòng)配置bean ? ? @Bean ? ? @ConfigurationProperties("spring.datasource") ? ? @Primary ? ? public DataSource druidDataSource(){ ? ? ? ? return new DruidDataSource(); ? ? } ? ? @Bean ? ? public MybatisSqlSessionFactoryBean sqlSessionFactoryBean(DataSourceProxy dataSourceProxy) throws Exception { ? ? ? ? //處理MybatisPlus ? ? ? ? MybatisSqlSessionFactoryBean factory = new MybatisSqlSessionFactoryBean(); ? ? ? ? factory.setDataSource(dataSourceProxy); ? ? ? ? factory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations)); ? ? ? ? //事務(wù)管理工廠 ? ? ? ? factory.setTransactionFactory(new SpringManagedTransactionFactory()); ? ? ? ? return factory; ? ? } ? ? @Bean ? ? public DataSourceProxy dataSource() { ? ? ? ? return new DataSourceProxy(druidDataSource()); ? ? } }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于synchronized的參數(shù)及其含義
這篇文章主要介紹了synchronized的參數(shù)及其含義詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10監(jiān)控Spring Boot 項(xiàng)目運(yùn)行情況操作方法
在實(shí)際開(kāi)發(fā)中,經(jīng)常會(huì)遇到想要獲取到服務(wù)器應(yīng)用的運(yùn)行情況的場(chǎng)景,在微服務(wù)架構(gòu)下對(duì)于每個(gè)應(yīng)用運(yùn)行情況的監(jiān)控是保證系統(tǒng)高可用的關(guān)鍵,本文給大家介紹如何實(shí)現(xiàn)在Spring Boot的jar包中對(duì)系統(tǒng)的運(yùn)行情況進(jìn)行監(jiān)控操作,感興趣的朋友跟隨小編一起看看吧2024-08-08SpringBoot中的配置類(@Configuration)
這篇文章主要介紹了SpringBoot中的配置類(@Configuration),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06詳解Java圖形化編程中的鼠標(biāo)事件設(shè)計(jì)
這篇文章主要介紹了Java圖形化編程中的鼠標(biāo)事件設(shè)計(jì),是Java的GUI開(kāi)發(fā)中的基礎(chǔ)部分,需要的朋友可以參考下2015-10-10Springboot實(shí)現(xiàn)添加本地模塊依賴方式
這篇文章主要介紹了Springboot實(shí)現(xiàn)添加本地模塊依賴方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02IDEA中如何查找jar包之間的依賴關(guān)系并忽略依賴的某個(gè)包
這篇文章主要介紹了IDEA中如何查找jar包之間的依賴關(guān)系并忽略依賴的某個(gè)包?本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08Java并發(fā)編程之常用的多線程實(shí)現(xiàn)方式分析
這篇文章主要介紹了Java并發(fā)編程之常用的多線程實(shí)現(xiàn)方式,結(jié)合實(shí)例形式分析了java并發(fā)編程中多線程的相關(guān)原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下2020-02-02