【问题详情】
引入:spring boot mybatis,也在application.yml做了相关数据源配置
项目在启动的时候,报错,具体错误如下:
从错误描述来看,应该是数据源配置和加载地方有问题。项目中目前使用的其实也是单数据源,按道理不应用该出现此问题。猜测当前可能是框架,把数据源识别为多数据源,DataSourceAutoConfiguration.calss 在自动配置,数据源逆乱导致的。
【解决方法】
注解里添加exclude = DataSourceAutoConfiguration.class 参数,问题解决
【深入解析】
默认spring boot框架中, DataSourceAutoConfiguration.class会自动查找application.yml或者properties文件里的spring.datasource.*相关属性并自动配置单数据源,但如果在项目中使用多数据源或项目是多模块(启动项),就需要排除该自动注入数据源配置类。在项目启动处加上@SpringBootApplication(exclude={DataSourceAutoConfiguration.calss})
DataSourceAutoConfiguration.class默认会帮我们自动配置单数据源,所以,如果想在项目中使用多数据源就需要排除它,手动指定多数据源。
该注解的作用是,排除自动注入数据源的配置(取消数据库配置),在springBoot中使用多数据源时,加上@SpringBootApplication(exclude={DataSourceAutoConfiguration.calss})
单数据源和多数据源配置有些不同。
注意 单数据源 中****application.yml为:
spring:
datasource:
name: test
url: jdbc:mysql:/10.10.10.23:3306/estserverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF8
username: test
password: test
此时springBoot 中的注解应该是@SpringBootApplication
如果springBoot 中要加上@SpringBootApplication(exclude={DataSourceAutoConfiguration.calss})
application.yml为
spring:
datasource:
default:
name: test
url: jdbc:mysql:/10.10.10.23:3306/estserverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF8
username: test
password: test