springboot 读取不到默认配置文件application.yaml
一、
先分析下springboot读取配置文件的原理,源码在org.springframework.boot.context.config.ConfigFileApplicationListener.class
的load(ConfigFileApplicationListener.Profile profile, ConfigFileApplicationListener.DocumentFilterFactory filterFactory, ConfigFileApplicationListener.DocumentConsumer consumer)
方法里,
我们可以看到加载默认配置文件名称由三个部分组成:
- 前缀:
classpath:/
或classpath:/config/
或file:./
或file:./config/
或file:./config/*/
- 后缀:
properties
,xml
,yml
,yaml
- 中间文件名: application或者application-(这种需要在pom文件配置properties)或者bootstrap或者bootstrap-(同上)
三个部分自由组合得到一个文件名,逐一遍历加载一遍,由此看到默认加载路径可以是/src/main/resources下的/
,/config
,/*/config
二、常见错误,
1. 把配置文件放在/src/main/resources下的conf
文件夹
2. 配置POM
文件的<build>
的<resources>
时,习惯性把targetPath
配成/conf
3. 配置了支持多环境(application-dev.yaml,application-sit.yaml,application-prod.yaml)的profiles,而没有配build
的resources
三、记录下加载数据库的源码
- 数据库的自动配置:
org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration.class
- 数据库的配置:
org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.class