当前位置: 首页 > 知识库问答 >
问题:

永久覆盖应用程序。按程序设置的属性

司寇书
2023-03-14

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

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

    private Long port;
    private String host;

}

我可以使用getPort检索属性,并使用setPort进行设置。

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

共有1个答案

陈欣荣
2023-03-14

您可以外部化您的配置文件(检查Spring留档)。

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

Maven公司:

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

然后在git服务器上创建git存储库,并将以下内容添加到应用程序中。属性:

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

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

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

有关更多详细信息,请查看此精美教程。

 类似资料:
  • 在我的。NET Core应用程序中,我向appsettings.json添加了一个数组,如下所示: 如果我想从azure应用程序服务中的应用程序设置中覆盖该值,使其具有空数组: 有办法做到这一点吗? 我试着把 在应用程序设置中,但它似乎没有覆盖appsettings的值。json

  • 我正在尝试在外部tomcat上运行camel应用程序。有2个应用程序。属性文件存在于我的项目中,一个在src/main/resources下,另一个在src/test/resources下。当我使用maven install命令创建war文件时,它使用应用程序。来自src/main/resources的属性文件(这是必需的),但当我在eclipse中使用tomcat启动应用程序时,它正在使用app

  • 我已经开发了azure定时器触发函数。我从功能应用程序的应用程序设置中获取计时器时间表,如下所示。 函数. json 这对于给定的静态时间表来说工作正常。但是当用户需要更改时间表时,该时间表应该能够根据另一个Web应用程序的用户要求进行更改。 我正在努力从外部应用程序动态地更改计划参数。我尝试的是部署一个ARM模板,从下面的ARM模板注入新的时间表值。 但是,这不是重写现有的appSettings

  • 我正在使用springfox swagger 2.8.0。我想根据我的需求定制我的Swagger文档和API版本路径。能够使用应用程序修改版本路径。属性,并且它正在正常运行: 斯普林福克斯。文档大摇大摆路径=/v2/可用性服务 http://localhost:8080/context-path/v2/availability-service 但是想要我的留档URL如下,如何使用applicati

  • 我有一个spring boot应用程序,它有一个应用程序YAML文件(src/main/resources/)。 我想覆盖部署的env部分(k8s)中的整个< code>props列表。在Kubernetes有什么办法吗?

  • 我想覆盖应用程序中定义的属性。属性通过cmd与应用程序中现有的其他属性。属性,但仅允许提供预定义值。 我需要的是通过应用程序中已经存在的命令行传递调度的参数。属性,它将更改在调度中定义的默认值。 我的问题是,当我从cmd执行jar文件时,它正在获取构建时存在于中的值。它没有覆盖现有值值。我想根据用户需要覆盖值。 Spring代码 应用属性 在cmd中