如何使用配置文件在 Spring 引导中外部化配置?
How to externalize configuration in Spring Boot using profiles?
我有一个应用程序,我想更改存储在 application.yml 文件中的数据源密码。 YML文件中的密码是这样存储的:
----
spring:
profiles: production
datasource:
password: prodpassword
注意:我也有开发和阶段配置文件。
使用 ConfigurationProperties
在 class 上设置密码属性,如下所示:
@Component
@ConfigurationProperties(prefix="datasource")
public class DataSourceConnector {
private password;
public void setPassword(String password) {
this.password = password;
}
现在,我尝试通过命令行 arg 使用 prodpa$$word 覆盖 prodpassword,但它不起作用:
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/
的注释,我在位置参数中省略了文件名
If you have specified any files in spring.config.location, profile-specific variants of those files will not be considered. Use directories inspring.config.location
if you also want to also use profile-specific properties.
如何在 jar 的 application.yml 中覆盖 datasource.password?
编辑:
正在使用 supervisorctl
启动/停止应用程序。
更改包含 java
命令的配置文件后,supervisorctl
必须重新读取更改:
supervisorctl reread
接下来,激活更改:
supervisorctl update
我有一个应用程序,我想更改存储在 application.yml 文件中的数据源密码。 YML文件中的密码是这样存储的:
----
spring:
profiles: production
datasource:
password: prodpassword
注意:我也有开发和阶段配置文件。
使用 ConfigurationProperties
在 class 上设置密码属性,如下所示:
@Component
@ConfigurationProperties(prefix="datasource")
public class DataSourceConnector {
private password;
public void setPassword(String password) {
this.password = password;
}
现在,我尝试通过命令行 arg 使用 prodpa$$word 覆盖 prodpassword,但它不起作用:
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/
的注释,我在位置参数中省略了文件名
If you have specified any files in spring.config.location, profile-specific variants of those files will not be considered. Use directories in
spring.config.location
if you also want to also use profile-specific properties.
如何在 jar 的 application.yml 中覆盖 datasource.password?
编辑:
正在使用 supervisorctl
启动/停止应用程序。
更改包含 java
命令的配置文件后,supervisorctl
必须重新读取更改:
supervisorctl reread
接下来,激活更改:
supervisorctl update