Как прочитать свойства Spring boot tomcat другого пользовательского bean-компонента перед инициализацией? - PullRequest
0 голосов
/ 01 августа 2020

Я хочу прочитать значение пароля хранилища ключей spring boot ssl из определенного пользователем Spring bean и установить для свойства SSL server.ssl.key-password.

@Component
public class KeyStorePasswordBean {
    public String password() {
        //implementation
    }    
}

Я пробовал с EnvironmentPostProcessor, но исключение NullPointer выбрано из-за KeyStorePasswordBean bean будет инициализирован после EnvironmentPostProcessor

public class PropertyEnvironmentPostProcessor implements EnvironmentPostProcessor {
    @Autowired
    KeyStorePasswordBean keyStorePasswordBean;

    @Override
    public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {
        String keystorePassword = keyStorePasswordBean.password(); //NullPointerException
        System.out.println("password: " + keystorePassword);
    }
} 

Как это сделать при весенней загрузке? Размышляя о том, как загрузить компонент KeyStorePasswordBean в контекст Spring перед началом инициализации сервера tomcat.

Я использую версию Spring загрузки 2.25 и версию Spring 5.2.4

1 Ответ

1 голос
/ 02 августа 2020

вы можете прочитать следующее свойство через:

ConfigurableEnvironment environment

вот так:

environment.getProperty("NAME_OF_YOUR_PROPERTIES")

, затем вы можете создать и добавить свой собственный источник свойств в среду (с помощью 'server. ssl.key-password ')

Map<String, Object> properties = new HashMap<>();
properties.put("server.ssl.key-password", property); // property = environment.getProperty("NAME_OF_YOUR_PROPERTIES")
environment.getPropertySources().addLast(new MapPropertySource("muCustomPropertySource", properties));

также, прочтите следующую статью - https://www.baeldung.com/spring-boot-environmentpostprocessor

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