spring.datasource.password из системного свойства не работает - PullRequest
0 голосов
/ 17 января 2020

Я использовал для завершения выборки из Spring Data ...

Хорошо работает.

Я добавил application.properties

#spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.url=jdbc:h2:file:./h2/demo
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=wrong
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

Я работал (по-видимому, при первом запуске он создает базу данных с любым определенным паролем).

Когда я изменил пароль на newWrong, он начал работать не так, как ожидалось (поэтому я подтвердил, что проверяет пароль).

Теперь я изменил файл свойств, чтобы он содержал

spring.datasource.password=#{systemProperties['pass']}

, и изменил основной AccessingDataJpaApplication на:

public static void main(String[] args) {
    System.setProperty("pass", "wrong" );
    SpringApplication.run(AccessingDataJpaApplication.class);
}

, и он не работает - все еще жалуюсь на пароль.

С другой стороны, когда я добавил

@Value("${bar}")
String foo;

и определил в свойствах приложения (и использовал wrong для пароля, чтобы предотвратить сбой)

bar=#{systemProperties['pass']}

это утверждение в классе приложения

System.out.println("foo: " + foo);

печатает foo: wrong.

Почему то же самое не работает для свойства spring.datasource.password?

Ответы [ 3 ]

0 голосов
/ 17 января 2020

Удалите строку или измените путь (например, /h2/demo1).

spring.datasource.url=jdbc:h2:file:./h2/demo

, поскольку последняя конфигурация является хранилищем этого файла.

0 голосов
/ 17 января 2020

Только что попробовал с

spring.datasource.password=${pass}

и все работает правильно.

Вы также можете использовать переменные среды формата SPRING_DATASOURCE_PASSWORD, чтобы определить эти свойства. Spring Boot разрешит их без какого-либо дополнения к конфигурации приложения.

Ссылка: https://docs.spring.io/spring-boot/docs/2.2.3.RELEASE/reference/htmlsingle/#boot -features-external-config-application-property-files

0 голосов
/ 17 января 2020

Возможно, это не точный ответ на ваш вопрос, но я считаю, что это ответ на то, что вы пытаетесь решить.

Вы можете просто передать пароль приложению при запуске его в командной строке, добавив -Dspring.datasource.password=wrong к команде. Вы можете сделать это с любой весенней собственностью.

Если вы работаете из и IDE, вы можете редактировать конфигурацию запуска, должно быть поле для Параметры виртуальной машины , где вы можете передать это.

Это будет быть каноническим способом обработки весной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...