Дополнительный файл yml / properties с переменными конфигурации для application.yml (logback) - PullRequest
0 голосов
/ 14 марта 2020

Я хочу добавить свой собственный файл file.yml / properties в свой класс ресурсов рядом с application.yml и bootstrap .yml. Например, private.yml.

Этот файл должен содержать некоторые значения, которые я хочу использовать в application.yml и bootstrap .yml,

, которые я добавил в свою основную загрузочную пружину. Класс этой аннотации: @ PropertySource ("classpath: private.properties")

И в application.yml:

spring:  
  datasource:        
    username: root
    password: ${private-db-pass}

Где значение $ {private-db- pass} из private.yml и прекрасно работает.

Но когда я пытаюсь добавить значение из файла private.yml в application.yml для настройки обратного входа:

logging:
  file:
    path: ${private-log-path}

Я получаю это ошибка:

java.lang.IllegalArgumentException: Could not resolve placeholder 'private-log-path' in value "${private-log-path}"
at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:178) ~[spring-core-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:124) ~[spring-core-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:236) ~[spring-core-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:210) ~[spring-core-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.core.env.AbstractPropertyResolver.resolveNestedPlaceholders(AbstractPropertyResolver.java:227) ~[spring-core-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.core.env.PropertySourcesPropertyResolver.getProperty(PropertySourcesPropertyResolver.java:88) ~[spring-core-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.core.env.PropertySourcesPropertyResolver.getProperty(PropertySourcesPropertyResolver.java:62) ~[spring-core-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.core.env.AbstractEnvironment.getProperty(AbstractEnvironment.java:535) ~[spring-core-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at org.springframework.boot.logging.LogFile.getLogFileProperty(LogFile.java:141) ~[spring-boot-2.2.5.RELEASE.jar:2.2.5.RELEASE]
at org.springframework.boot.logging.LogFile.get(LogFile.java:132) ~[spring-boot-2.2.5.RELEASE.jar:2.2.5.RELEASE]
(...)

Это содержимое файла private.properties:

private-db-pass=dbTestPassword
private-log-path=c:/logs/

Когда у меня есть этот путь непосредственно в application.properties, он отлично работает:

logging:
  file:
    path: c:/logs/

Возможно, logback нужно это значение, прежде чем оно будет добавлено в контекст весны.

Вопрос: могу ли я сделать это таким образом, чтобы работать нормально? Или я должен "обойти это"?

(извините, мой engli sh не идеален)

...