配置正确spring-boot工程启动的时候报错dynamic-datasource Please check the setting of primary
一个两年没有碰的spring-boot工程,启动时报错。因为用了baomidou的多源数据库配置,因此启动时报错primary没有正确配置。经过检查,确定配置文件配置正确。
报错原因是没有读到正确的配置文件。pom文件里的resources标签重定义,把默认的resources文件路径覆盖了。解决方法是,在pom里加一个正确的resources配置,或者把之前的重写的resources删除掉使maven启用默认值。或者是在环境变量里加上spring.config.location,值为配置文件的绝对值。
我是这样定位问题的。
-
根据错误日志里的堆栈信息,定位到加载配置的类和函数。
DynamicDataSourceAutoConfiguration类,dataSourceCreator函数。发现properties里的druid值全部为空。也就是说没有读到配置。 -
因为application-local.yml是我用的配置文件,在启动的日志中寻找The following profiles are active: local。发现使用的profile是default。也就是说在applciation.yml文件中的spring.profiles.active: local这一条没有起作用。
-
联想到以前同组同事的花活,在IDEA的环境变量里加上spring.active.profiles值设置成local。启动日志里成功地报了The following profiles are active: local。这下能找到application-local.yml了吗?
-
**不能!**我在Spring core模块的加载配置类中打断点,ConfigFileApplicationListener类的Loader内部类的load方法打断点。发现不会进入到这个函数。
-
在IDEA的环境变量里加上
spring.config.location
值是resources/appplication-local.yml
。发现file: application-local.yml
文件的resource.exists
返回false。也就是说没有这个文件。
for(Resource resource:resources) {
if (resource == null || resource.exists()) {...}
- what?我又把
spring.config.location
的值改成classpath:/resources/
。依然无法读取到。 - 把值改成绝对路径,可以正确读取了。
问题解决了。
但是问题是怎么造成的?
这个工程的结构是这样的:
root => root-dependency => app => app-module
发现在root-dependency里有个配置:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.class</include>
<include>**/*.xml</include>
</includes>
</resource>
<!-- <resource>-->
<!-- <directory>src/main/resources</directory>-->
<!-- <includes>-->
<!-- <include>**/*</include>-->
<!-- </includes>-->
<!-- </resource>-->
</resources>
这个配置项重写了resource,如果没有这个配置,maven默认的effective pom是这样的:
<resources>
<resource>
<directory>app-module的绝对路径\src\main\resources
</directory>
</resource>
</resources>
解决方法有两种,1 删除掉root-dependency里的resource配置。 2. 在app-module里加上src/main/resources
配置。
spring boot读取配置文件的过程在这里有详细阐述:
https://www.cnblogs.com/lay2017/p/11484997.html
原文地址:https://blog.csdn.net/kakadiablo/article/details/145211215
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!