我们知道spring boot 支持通过配置JVM参数 - 为一个外部文件的位置,以达到将配置文件与应用隔离的目的
1 在使用中发现一个问题,
如 :
- 将spring boot 的配置文件放到一个文件夹 D:/spring-config 下。
- 配置JVM启动参数 -= D:/spring-config
然后会发现项目无法启动。
spring 官网也没有找到对这个配置的更详细的说明
/spring-boot/docs/2.3./reference/html/#common-application-properties
2 先说解决方案:
将配置的路径添加斜杠结尾即可,注意结尾的斜杠
-= D:/spring-config/
3 接下来看原因
在这个类里面可以看到spring 关于加载配置文件的各种默认规则,如配置文件的位置 名称等等。
也定义了配置文件位置这个属性,至于在哪儿使用就不贴代码了。
/**
* The "config location" property name.
*/
public static final String CONFIG_LOCATION_PROPERTY = "";
然后看他的load方法。注意到木有 ("/"); 也就是必须以 "/" 结尾的配置才会当做目录去遍历其中的文件
private void load(Profile profile, DocumentFilterFactory filterFactory, DocumentConsumer consumer) {
getSearchLocations().forEach((location) -> {
boolean isFolder = ("/");
Set<String> names = isFolder ? getSearchNames() : NO_SEARCH_NAMES;
((name) -> load(location, name, profile, filterFactory, consumer));
});
}
补充一下:
- 的值可以为文件或者路径,一般情况下我们的应用会有多个配置文件,所以应该是文件夹的形式居多。
但是springboot 志在微服务,估计spring 是认为单个配置文件足以应付大多数场景,所以做了这个判断。
这个变量的值时具体的文件还是一个文件夹,是可以通过java的File的Api接口去判定的,而不是通过反斜杠去判断。这样可能对开发更友好一点吧。