栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Boot启动报错:Failed to configure a DataSource: ‘url‘ attribute is not 本质问题解析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot启动报错:Failed to configure a DataSource: ‘url‘ attribute is not 本质问题解析

Spring Boot启动报错:Failed to configure a DataSource: ‘url’ attribute is not 本质问题解析

**************************
APPLICATION FAILED TO START
***************************

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class


Action:

Consider the following:
	If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
	If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

问题描述: 配置数据源失败,没有找到url等数据库配置信息

关于这个报错,网上已经说了很多,此处不再赘述,究其根本原因,在此阐述下:
普遍有以下几种解决方式:
1.在没有使用到数据库的前提下,可以注释掉数据库相关依赖,比如,mybatis-spring-boot-starter、spring-boot-starter-jdbc等;
这样做的本质是因为
(1)这些依赖中有配置类DataSourceAutoConfiguration加载的条件依赖类 EmbeddedDatabaseType.class ,查看DataSourceAutoConfiguration源码可知,@ConditionalOnClass({ DataSource.class, EmbeddedDatabaseType.class }),当项目中存在DataSource和EmbeddedDatabaseType时,DataSourceAutoConfiguration配置类会被加载,而加载时需要 url、driver class、root、password信息,此时配置文件中又没有配置,所以报错。DataSource是JDK自带的,这个移除不了,EmbeddedDatabaseType是spring-jdbc包下的,移除掉包含spring-jdbc的依赖就可以了。基于这个原因,在pom文件中注释掉mybatis-spring-boot-starter、spring-boot-starter-jdbc等数据库依赖就可以解决问题

2.在没有使用到数据库的前提下,使用exclude移除掉配置数据源的配置类
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, DruidDataSourceAutoConfigure.class})
注意:有时不仅仅只有默认的DataSourceAutoConfiguration类,Spring Boot扫描的是根路径下所有的spring.factories文件
这种方式的本质是
不让数据库配置类加载,Spring Boot自动配置的流程
(1)扫描根路径下所有的spring.factories文件,并以key-value的方式封装到properties中
(2)只获取key为EnableAutoConfiguration的自动配置类
(3)去重
(4)移除掉不需要加载的类(使用exclude配置的需要移除的配置类)
(5)按条件实例化加载
这种方式就是在第四步的时候移除数据库相关的配置类,不让其加载,也就不需要数据库相关配置,就不会报错了

3.要是使用到了数据库,就直接在配置文件中配置上相关配置就可以了,这个没什么本质说的

出现这种问题,还是需要了解Spring Boot自动配置的原理,需要了解的,可以翻看我之前写的博客。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/681822.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号