Свойства приложения можно просмотреть с помощью специального класса, реализующего ApplicationListener, и определить его как один из классов startupup в записи весенних фабрик, чтобы они выполнялись до загрузки приложения. Шаги заключаются в следующем: -
а) Создайте файл с именем spring.factories в ресурсе есть путь к классам ЦСИ \ главная \ Resources \ META-INF \ spring.factories с содержанием -
# Application Listeners
org.springframework.context.ApplicationListener=demo.CustomConfigListener
б) Создание пользовательского класс слушателя в вашем Proj как здесь CustomConfigListener
package demo;
import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.core.env.EnumerablePropertySource;
import org.springframework.core.env.PropertySource;
public class CustomConfigListener implements ApplicationListener<ApplicationEvent> {
@Override
public void onApplicationEvent(ApplicationEvent event) {
if (event instanceof ApplicationEnvironmentPreparedEvent) {
for(PropertySource<?> source : ((ApplicationEnvironmentPreparedEvent) event).getEnvironment().getPropertySources()){
if(source.getName().equals("applicationConfigurationProperties")){
if (source instanceof EnumerablePropertySource) {
for(String name : ((EnumerablePropertySource) source).getPropertyNames()){
System.out.println(name+" :: "+ ((EnumerablePropertySource) source).getProperty(name));
}
}
}
}
}
}
}
с) Ваш заказные ConfigurationProperties класс
package demo;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(ignoreUnknownFields = false, prefix = "mail")
public class MailProperties {
private String host;
private int port;
private Smtp smtp;
//Getters & Setters
public static class Smtp {
private boolean auth;
private boolean starttlsEnable;
//Getters & Setters
}
}
d) Наконец ваши application.properties
mail.host=localhost
mail.port=25
mail.smtp.auth=false
mail.smtp.starttls-enable=false
Я не уверен, что я получаю то, что вы пытаетесь сделать. В любом случае, привод может помочь. Существует конечная точка '/ env', в которой перечислены загруженные файлы конфигурации и их содержимое и'/configprops', которые дают вам обзор фактической конфигурации каждого компонента '@ ConfigurationProperties'. Не уверен, что вам нужно, но это будет хорошим началом. –
@ StéphaneNicoll Я пытаюсь записать/отобразить все мои конфиги до обновления контекста. Например, у меня есть JTA beans и т. Д., Которые являются автоконфигурированными при запуске, поэтому, если соединение терпит неудачу, я хочу видеть, какие свойства конфигурации были до инициализации компонента. Это не приложение, поэтому пути контекста не помогают. Кроме того, если весенний контекст не загружается (неверная конфигурация бина, неудачные проверки и т. Д.), Я хочу видеть, какие именно параметры были использованы. –
@ StéphaneNicoll Я посмотрел на блок исполнительных механизмов для JMX-экспонирования реквизитов конфигурации, но, как я подозревал, он извлекает компоненты из контекста приложения, чтобы отображать их значения. Моя проблема заключается в том, что я хочу зарегистрировать эту информацию до обновления контекста; если компонент не работает во время создания экземпляра из-за неполных или неправильных значений конфигурации, я хотел бы посмотреть, что это за значения. Такая же проблема, если я пытаюсь использовать метод @ @ PostConstruct, вызывается после обновления контекста. Я удивлен, что нет весеннего регистратора, чтобы я мог видеть эти значения по мере их набора. –