背景: springboot 应用打包成 jar 包运行,读取了依赖 jar 包下的 application.yml 作为应用配置文件。 问题: 不是说好了:Spring Boot 的配置文件加载机制主要关注以下位置: file:./config/ file:./ classpath:/config/ classpath:/ 那为啥 springboot 应用依赖的 jar 包下的 application.yml 也会被当前 sprintboot 应用加载为配置文件。 其他 jar 包下的文件,不应该不算在 classpath:/ 下吧。 实在整不明白了,求助各位大佬。
当你在 Spring Boot 应用中依赖某个 Jar 包时,如果这个 Jar 包中包含 application.yml 文件,它也在 classpath 范围内。所以它也会被加载并被视为配置来源之一。 Spring Boot 的 SpringApplication 启动过程中会使用 ConfigFileApplicationListener 加载配置文件,该类的实现会扫描 classpath ,包括依赖的 Jar 包内容。