Я использую весеннюю загрузку 1.4.2 и теперь пытаюсь установить свойства.Spring Boot как установить spring.config.location в application.properties для yaml
У меня есть четыре дела об использовании .properties и .yml к внешнему (внутри ресурсам) и локальной файловой системы (вне папки проекта).
.properties внешний (внутри папки ресурсов) хорошо работает как @value ($ {property.name}) и @PropertySource последнее использование значение атрибута можно загрузить из файловой системы, как показано ниже.
@Component
@PropertySource(value="file:C:\\properties\\application-dev.properties")
@PropertySource(value="file:C:\\properties\\application-test.properties")
public class ExternalProperties {
// ...
}
Но .yml не то, что хорошо работает в папке ресурсов, когда имя файла «application.yml»
.yml может быть загружен @ConfigurationProperties и необходимости «propdeps-плагин»
мой .yml файл
environments:
dev:
url: http://dev.bar.com
name: Developer Setup
prod:
url: http://foo.bar.com
name: My Cool App
Этот код работает хорошо
@Component
// external(inside resources)
@ConfigurationProperties(prefix="environments")
// outside project folder
@ConfigurationProperties(locations={"file:C:\\properties\\application.yml"}, prefix = "environments")
public class YamlProperties {
private Map<String, String> dev = new HashMap<>();
private Map<String, String> prod = new HashMap<>();
public Map<String, String> getDev() {
return this.dev;
}
public Map<String, String> getProd() {
return this.prod;
}
}
Этот код имеет проблему устаревшего атрибута места (я читал много статей, но не могу понять, ясно), поэтому мне нужно найти API документ и найти «ConfigFileApplicationListener» из этого section.
# SPRING CONFIG - using environment property only (ConfigFileApplicationListener)
spring.config.location= # Config file locations.
spring.config.name=application # Config file name.
Так напишите выше свойства на application.properties, как это.
spring.config.location=file:C:\\properties\\application.yml
spring.config.name=application
и перезагрузки .yml свойство (я не пытался банка преобразования приложений. Я использую войну и тест через контроллер)
@Component
@ConfigurationProperties(prefix="environments")
public class YamlProperties {
private Map<String, String> dev = new HashMap<>();
private Map<String, String> prod = new HashMap<>();
public Map<String, String> getDev() {
return this.dev;
}
public Map<String, String> getProd() {
return this.prod;
}
}
Этот код не нагрузить .yml из локального файла система C: диск, но при добавлении файла application.yml в папку ресурса работает хорошо.
Так как установить spring.config.location для нагрузки .yml
И я хочу знать, почему атрибут место работы еще хотя устаревшим, начиная с 1.4 вер.
и интересно, как использовать ConfigFileApplicationListener. Я не могу отслеживать код, который трудно понять, дайте подсказку ~!
EDIT:
Я избегаю понял об этом, что, когда начать войну снова и сделать контекст снова используя локальные свойства файловой системы. Это не то, что собирательно связал его, но остался для будущего шага.
кота перезагружать, чем войны развернуть новую поэтому у меня есть файл на локальной системе он содержит свойство, если я изменить данные этого файла, что может быть udated свойств контекста при перезагрузке Tomcat.
Почему я продолжаю пробовать эту работу, я использую публичную учетную запись github и защищаю connect db info something else to. Я получаю этот материал и продолжаю следующий вопрос вроде git-encrpt, spring-cloude, nginx, docker. Спасибо за любую помощь действительно полезно.
Лучше попробуйте настройку 'bootstrap.yml' и укажите любую конфигурацию, которую вы хотите там. Например, 'spring.config.location'. Если вы используете 'bootstrap.yml', обратите внимание на добавление зависимости' org.springframework.cloud: spring-cloud-context'. Для простоты 'spring-cloud-context' автоматически загрузит' bootstrap.yml' и конфигурации, которые также могут быть загружены автоматически. Другой способ сделать это - указать из аргументов командной строки, таких как '-Dspring.config.location =' или просто '--spring.config.location ='. Аргументы в прежнем формате должны появляться перед опцией '-jar'. –
Как правило, расширение 'yml' обычно используется и хорошо известно в весеннем каркасе, а не' yaml'. И самый простой способ добиться этого - называть ваш загрузочный файл конфигурации как 'bootstrap.yml' в вашей папке' resources'. Пример [https://github.com/soiff-spring/spring-boot-example.git](https://github.com/soiff-spring/spring-boot-example.git) может помочь. –
спасибо за информацию о весенних облаках Я попробую сделать следующий шаг и обновить имя yaml до yml, но все равно не работает. спасибо за новую информацию @GeminiKeith –