提问人:user497087 提问时间:11/10/2023 更新时间:11/12/2023 访问量:30
从外部位置加载属性
Loading Properties from external location
问:
使用 springboot 3.1.5,我需要将 .properties 文件保留在 jar 外部,所以我用
java -jar --spring.config.location=file:path/to/directory/
这将找到 Application.Properties,没有问题。但是,如果我将另一个.properties文件添加到同一目录,spring不会加载该文件。如何告诉Spring加载该目录中的所有.properties文件,而不必手动列出它们
问候
答:
0赞
phuongnq1995
11/12/2023
#1
您可以通过方法以编程方式导入它们并将它们设置为 ,这是一个演示。main
spring.config.import
@SpringBootApplication
public class ServiceParentApplication {
public static void main(String[] args) {
Arrays.stream(args)
.filter(arg -> arg.startsWith("--spring.config.location=file:")) // Incase you read folder application.properties via args
.map(arg -> arg.replace("--spring.config.location=file:", ""))
.findFirst()
.ifPresent(folder -> {
try (Stream<Path> paths = Files.walk(Paths.get(folder))) {
var importFiles = paths
.filter(Files::isRegularFile)
.map(file -> file.toString())
.filter(fileName -> fileName.endsWith("properties") || fileName.endsWith("properties") && !fileName.endsWith("application.properties"))
.map(fileName -> "optional:file:" + fileName)
.collect(Collectors.joining(";"));
System.setProperty("spring.config.import", importFiles);
} catch (IOException e) {
throw new RuntimeException(e);
}
});
SpringApplication.run(ServiceParentApplication.class, args);
}
这是 可选位置 的文档。此外,如果不使用文件作为附加导入,则可以首选配置树来导入每个变量的每个文件。.properties
谢谢@seenukarthi的建议,我指的是构建这个。
评论