2016-04-25 3 views
0

У меня есть приложение, в котором я хотел бы изменить пароль источника данных, который хранится в файле 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.

+0

Вы пробовали '-Dspring.config. местоположение =/USR/доли/MyApp/'? – jny

+0

Вы можете посмотреть мой ответ на аналогичный вопрос здесь: http://stackoverflow.com/questions/36635163/spring-boot-externalizing-properties-not-working/36635367#36635367 –

+0

Спасибо. Я пробовал это, но это не сработало. Оказывается, этот вопрос не был связан с весной. Это было связано с тем, что я запускал приложение. Бегун приложения (supervisorctl) кэшировал мой файл конфигурации (между запуском и остановкой приложений). Извините, я не включил это в мой OP. – James

ответ

0

После изменения конфигурационного файла, который содержит команду java, supervisorctl должен перечитать изменения:

supervisorctl reread 

Далее, активировать изменения с:

supervisorctl update 
Смежные вопросы