1
ElegantOfKing 11 天前
当你在 Spring Boot 应用中依赖某个 Jar 包时,如果这个 Jar 包中包含 application.yml 文件,它也在 classpath 范围内。所以它也会被加载并被视为配置来源之一。
Spring Boot 的 SpringApplication 启动过程中会使用 ConfigFileApplicationListener 加载配置文件,该类的实现会扫描 classpath ,包括依赖的 Jar 包内容。 |
2
CLMan 11 天前
因为 classpath 有两种格式:文件夹、jar 包,换句话说:
比如`java -classpath /home/root/a.jar`等价于`java -classpath /home/a`,`a`是`a.jar`解压后的根目录。 也就是当你 classpath 指定 jar 包时,等价于 jar 包内的内容位于`classpath:/`下。 |
4
qclown OP @CLMan
@ElegantOfKing 感谢两位大佬,之前我理解错了。 我理解类路径是一个树型的目录结构。 但实际上,类路径是一个目录或者 jar 包路径构成的路径列表,列表中的每个目录是一个树型目录结构。 当查找类路径中的资源,比如 / /config 时,是按优先级遍历类路径下的目录,寻找这个目录下的 / /config ,一旦找到了就返回。 所以 classpath:/ 是指所有类路径的根目录,而不是某一个路径(比如当前 jar 里) |
5
ZZ74 10 天前
其他 jar 包下的文件,不应该不算在 classpath:/
No ,是算的。 |
7
huyangq 9 天前
你可能没理解什么是 classpath
|
8
house600 8 天前
有 demo 吗,我怎么没试出来
|
10
qclown OP @house600 整个 maven 工程,下两工程:config 、web 。配置文件放在 config 下,web 依赖 config 。就会看到配置文件生效了。
|