У меня есть приложение, в котором я хотел бы изменить пароль источника данных, который хранится в файле application.yml. Пароль в файле YML сохраняется следующим образом:Как экстернализировать конфигурацию в Spring Boot с помощью профилей?
----
spring:
profiles: production
datasource:
password: prodpassword
Примечание: У меня также есть профили для разработки и стадии.
пароль проп устанавливается на классе с использованием ConfigurationProperties
например следующим образом:
@Component
@ConfigurationProperties(prefix="datasource")
public class DataSourceConnector {
private password;
public void setPassword(String password) {
this.password = password;
}
Теперь я пытаюсь переопределить prodpassword с prodpa $$ слово с помощью командной строки арг, но он не работает:
java -Dspring.profiles.active=production -jar /usr/share/myapp/myapp-1.0.jar --datasource.password='prodpa$$word'
Я также попытался создать файл 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:
Если указаны какие-либо файлы в spring.config.location, профильные конкретные варианты эти файлы не будут рассматриваться. Используйте каталоги в
spring.config.location
, если вы также хотите использовать свойства профиля.
Как я могу переопределить datasource.password в application.yml контейнера?
Редактировать: Приложение запускается/останавливается с использованием supervisorctl
.
Вы пробовали '-Dspring.config. местоположение =/USR/доли/MyApp/'? – jny
Вы можете посмотреть мой ответ на аналогичный вопрос здесь: http://stackoverflow.com/questions/36635163/spring-boot-externalizing-properties-not-working/36635367#36635367 –
Спасибо. Я пробовал это, но это не сработало. Оказывается, этот вопрос не был связан с весной. Это было связано с тем, что я запускал приложение. Бегун приложения (supervisorctl) кэшировал мой файл конфигурации (между запуском и остановкой приложений). Извините, я не включил это в мой OP. – James