gpt4 book ai didi

java - Spring Boot - 添加外部属性文件

转载 作者:行者123 更新时间:2023-11-29 03:11:42 25 4
gpt4 key购买 nike

我在 SpringBoot 中有一个简单的 MVC 应用程序,使用 java-config 创建(我没有 web.xml)。
该应用程序具有基于 JPA 的数据库连接。到目前为止,一切都很好,但现在我必须将 db.properties 从 WAR 内部移动到操作系统变量(“CONFIG_LOCATION”)指定的位置。

spring doc写的不是太多。只说是可行的,但是我应该如何在我的 Spring 应用程序中设置它?
我想这应该在初始化之前完成。

然后我只看到两个选项:
- SpringApplication - 有一个地方我应该从 OS 变量插入文件位置但我找不到它,
- 一些注释,将理解操作系统变量,并在创建 EntityManager 之前将文件从它添加到 spring 上下文。

我愿意接受建议,我应该怎么做。

最佳答案

正如另一个答案中提到的 @PropertySource注释是可行的方法(我将添加一些细节)。在 Java 8 中,你可以多次将它应用到你的配置类中,顺序很重要!例如,您可以进行以下配置:

@SpringBootApplication
@PropertySource("classpath:/db.properties")
@PropertySource(ignoreResourceNotFound = true, value = "file:${MY_APP_HOME}/db.properties")
@PropertySource(ignoreResourceNotFound = true, value = "file:${user.home}/.myapp/db.properties")
@ComponentScan("com.myorg")
public class Application {
// ....
}

这里我假设你应该有 MY_APP_HOME 环境变量,而且你可能想在用户主目录中放置一些设置。但是这两个配置都是可选的,因为 ignoreResourceNotFound 设置为 true。

另请注意订单。您可能在src/main/resources/db.properties 中对开发环境进行了一些合理的设置。并将特定设置放在运行生产服务的主机操作系统中。

查看 javadoc 中的 Resolving ${...} placeholders within @PropertySource resource locations 部分了解详情。

关于java - Spring Boot - 添加外部属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29013760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com