【bug日志】spring boot项目启动,报错Failed to configure a DataSource: ‘url‘ attribute is not specified and no

【问题详情】

引入:spring boot mybatis,也在application.yml做了相关数据源配置

【bug日志】spring boot项目启动,报错Failed to configure a DataSource: ‘url‘ attribute is not specified and no_第1张图片

 项目在启动的时候,报错,具体错误如下:

【bug日志】spring boot项目启动,报错Failed to configure a DataSource: ‘url‘ attribute is not specified and no_第2张图片

从错误描述来看,应该是数据源配置和加载地方有问题。项目中目前使用的其实也是单数据源,按道理不应用该出现此问题。猜测当前可能是框架,把数据源识别为多数据源,DataSourceAutoConfiguration.calss 在自动配置,数据源逆乱导致的。

【解决方法】

注解里添加exclude = DataSourceAutoConfiguration.class 参数,问题解决

【bug日志】spring boot项目启动,报错Failed to configure a DataSource: ‘url‘ attribute is not specified and no_第3张图片

 【深入解析】

默认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
 

你可能感兴趣的:(Spring,boot,框架应用,bug,spring,boot,java)