【问题标题】:Permanently overriding application.properties programatically以编程方式永久覆盖 application.properties
【发布时间】:2021-05-10 00:00:38
【问题描述】:

我想开发一个 API,让非程序员可以设置电子邮件属性,如端口或主机。我发现我可以使用 Spring Boot 注释 @ConfigurationProperties 在类中加载属性。

@Configuration
@ConfigurationProperties(prefix = "company.mail")
@Data
public class ConfigProperties {

    private Long port;
    private String host;

}

我可以使用例如检索属性getPort 并使用 setPort 设置它们。

但是,使用这种方法,当我使用 setPort 或 setHost 时,application.properties 文件中的实际值不会改变。因此,当我重新启动应用程序时,更改会丢失。有没有办法实际更改 application.properties 文件中的值,或者我是否需要一个数据库,以便在应用程序启动时从中加载属性?

【问题讨论】:

标签: java spring spring-boot properties


【解决方案1】:

您可以外部化您的配置文件(检查 spring documentation)。

为此,在您的 pom.xml 中添加以下依赖项:

马文:

<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

然后在您的 git 服务器上创建一个 git 存储库并将以下内容添加到您的 application.properties 中:

spring.cloud.config.server.git.uri=http://{yourGitRepoUrl}.git 

并将@EnableConfigServer 注解添加到您的 SpringBootApplication 类。 最后通过将以下内容添加到 application.properties 将您的应用程序链接到您的配置服务器:

spring.cloud.config.uri=http://localhost:8080  #whatever your port is

更多详情请查看这个漂亮的Tutorial

【讨论】:

    猜你喜欢
    • 2015-05-18
    • 1970-01-01
    • 2014-12-10
    • 2011-11-29
    • 2015-09-18
    • 2012-02-27
    • 2015-04-07
    • 2018-08-26
    • 1970-01-01
    相关资源
    最近更新 更多