一、优先级顺序排序
添加图片注释,不超过 140 字(可选)
假设我们使用springboot打了一个jar包,上面的图说明如下:
外部:
1:先加载和jar包在同一目录的config文件夹下的配置文件
2:第二加载和jar包在同一目录的配置文件
内部:
3:第三加载jar包反编译后的BOOT-INF/classes/config/下的配置文件
4:第四加载jar包反编译后的BOOT-INF/classes/下的配置文件
注:BOOT-INF/classes/config目录,其实就是源代码中resources目录下的config;BOOT-INF/classes/目录就是源代码中resources目录。
二、启动日志加载配置分析
- 背景:最近遇到的logback.xml加载问题,在外部引入的logback.xml中定义了某个类的输出,但是日志启动的时候没有打印相关的信息,而程序完全启动后在会有相关信息
- 分析:根据输出日志的信息
INFO in ch.qos.logback.classic.LoggerContent[default]-Found resource [logback.xml] at [jar:file:/appl/gap-ngix/agent/gap-agent.jar!/BOOT-INF/classes!/logback.xml]
可以看到,启动日志初就加载配置文件了,加载到是内部的上面的4。
- 原因: springboot在启动初,会加载内部的logback.xml,完全启动后,才会加载外部的logback.xml,所以最好保持两者一致
- 待解决:不知道为啥加载内部的是上面的4,而不是3,这个感觉需要看springboot的源码了,另外,启动日志一般作用不是很大,保证启动后加载正确的logback.xml 一般就满足很大需求了。