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

如何使用概要文件在Spring Boot中外部化配置?

司空宗清
2023-03-14

我有一个应用程序,希望更改存储在application.yml文件中的数据源密码。YML文件中的密码存储如下:

----
spring:
    profiles: production
datasource:
    password: prodpassword
@Component
@ConfigurationProperties(prefix="datasource")
public class DataSourceConnector {

    private password;

    public void setPassword(String password) {
        this.password = password;
    }
java -Dspring.profiles.active=production -jar /usr/share/myapp/myapp-1.0.jar --datasource.password='prodpa$$word'

我还尝试在JAR之外创建一个相同的(除了新密码)application.yml文件。那也不管用。

java -Dspring.profiles.active=production -jar /usr/share/myapp/myapp-1.0.jar --spring.config.location=/usr/share/myapp/

注意:由于http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-profile-specific-properties中的这一注意,我在location param中省略了文件名:

如果在spring.config.location中指定了任何文件,则不会考虑这些文件的特定于配置文件的变体。如果还想使用特定于配置文件的属性,请使用spring.config.location中的目录。

如何在jar的application.yml中重写datasource.password?

编辑:正在使用supervisorCTL启动/停止应用程序。

共有1个答案

李成礼
2023-03-14

更改包含java命令的配置文件后,supervisorCTL必须重新读取更改:

supervisorctl reread

接下来,用以下命令激活更改:

supervisorctl update
 类似资料:
  • 在springboot应用程序中,我有一个jar,然后是一个子目录config with application。属性,applicationContext。xml和log4j。。。属性文件。 我正在尝试外部化log4j配置。application.properties是这样外部化的。 但是,当springboot运行时,它使用jar文件中的log4j配置文件。通过使用-Dlog4j.debug选

  • 我有一个启动应用程序,部署到一个外部tomcat服务器,一切工作在我的本地与本地数据库。现在,我必须将代码推广到数据库配置不同的更高环境。我读了很多关于配置文件的etc...,但是当它是一个外部tomcat并且不使用

  • myapplication.properties(Spring的主配置文件) log4j2.xml 两者都位于之下。 我的问题是如何配置Tomcat和Spring Boot,使我拥有一个包含这两个文件的目录,以便覆盖在下定义的默认值(这些默认值位于爆炸战争中的中)。 首先,作为我正在处理的项目的要求,我通过编辑,将默认的Tomcat基目录改为指向另一个位置: 我的文件夹保存Tomcat和Sprin

  • 注意:它在src/main/resources/application.yml中工作

  • 上一个示例仅展示了java硬编码式的配置,更多的应用场景是使用外部配置文件,灵活配置调度策略,以便于随时改变调度策略,如下是外部配置的代码示例: cron4j=task1, task2 task1.cron=* * * * * task1.class=com.xxx.TaskAaa task1.daemon=true task1.enable=true task2.cron=* * * * *

  • 我希望外部文件的属性覆盖内部值(如果它们存在于外部文件中)。 在我的configuration类中,我使用PropertySource注释设置文件: