spring.factories 는 언제, 어떻게 사용하는가? / 환경 변수 설정 방법 / 특정 config 설정 방법 /
spring boot 에서 properties 추가
*.properties
파일을 만들고, 그안에 설정값들을 넣는다고
해보자.
# myinit.properties
my.app.sleeptime=5000
my.app.rate=1
보통은 이 값을 그냥 불러다가 필요한 곳에 쓰면 된다. 근데 spring context 안에서 사용하기 위해서 spring context 가 가지고 있는 변수에 넣어주는 과정이 필요한듯 하다. (추측)
그래서 이것을 위한 방법으로 Spring 은 ConfigurableEnvironment 를 제공하는 듯 하다. 이녀석이 호출되는 시점은 아래그림을 참고하자.
// code from ref. 2
public class MyEnvPostProcessor implements EnvironmentPostProcessor {
@Override
public void postProcessEnvironment(ConfigurableEnvironment environment,
SpringApplication application) {
PropertySource<?> system = environment.getPropertySources()
.get(SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME);
if (!hasOurPriceProperties(system)) {
// error handling code omitted
}
Map<String, Object> prefixed = names.stream()
.collect(Collectors.toMap(this::rename, system::getProperty));
environment.getPropertySources()
.addAfter(SYSTEM_ENVIRONMENT_PROPERTY_SOURCE_NAME, new MapPropertySource("prefixer", prefixed));
}
}
Spring Boot bootstrap process 에서 이 implementation 을 호출하기
위해서, META-INF/spring.factories
에 등록해야 된다.[ref. 2]
(정말 별로다, -.-)
org.springframework.boot.env.EnvironmentPostProcessor=
com.my.environmentpostprocessor.MyEnvPostProcessor
댓글 없음:
댓글 쓰기