我有一个应用程序,希望更改存储在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
启动/停止应用程序。
更改包含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注释设置文件: