Package com.poscoict.glueframework.boot
Class GlueEnvironmentPostProcessor
java.lang.Object
com.poscoict.glueframework.boot.GlueEnvironmentPostProcessor
- All Implemented Interfaces:
org.springframework.boot.EnvironmentPostProcessor,Ordered
public class GlueEnvironmentPostProcessor
extends Object
implements org.springframework.boot.EnvironmentPostProcessor, Ordered
Glue 설정(glue.properties)을 Spring Boot 환경(Environment)에 주입하는
EnvironmentPostProcessor.
왜 EnvironmentPostProcessor인가
Spring Boot에서 외부 설정 파일을 환경에 넣는 공식 확장점은EnvironmentPostProcessor이며,
이는 환경이 만들어지는 단계(빈 생성·@ConfigurationProperties 바인딩 이전)에 실행된다.
따라서 여기서 PropertySource를 추가하면 application.properties 바인딩과 충돌하지 않는다.
(레거시의 PropertySourcesPlaceholderConfigurer 방식은 BeanFactoryPostProcessor 단계 —
즉 환경이 이미 완성되어 Boot이 바인딩하는 시점 — 에 살아있는 환경을 변형하여 application.properties의
표준 설정(server.port 등)을 무력화시키는 버그가 있었다. 이 클래스가 그 역할을 대체한다.)
동작
- 토글:
glue.property.auto-load=false면 아무 것도 하지 않음(기본 true). - CONFIG_PATH 브릿지: 시스템 프로퍼티
CONFIG_PATH가 없고glue.config.path가 있으면 시스템 프로퍼티로 설정(GlueStaticContext·라이선스가 이를 사용). <CONFIG_PATH>/glue.properties로드 →<CONFIG_PATH>/glue.cipher가 있으면enc##접두 값들을 로드 시점에 복호화(평문화)."glueProperties"PropertySource로 환경에addLast(낮은 우선순위) 추가 → application.properties / 커맨드라인이 glue.properties를 override 가능.
복호화 적용 범위: 로드 시점에 평문화하므로 ${}·@Value·@ConfigurationProperties
모두에서 복호화된 값이 쓰인다(레거시는 ${} 치환 경로에서만 복호화됐던 것보다 개선). 단,
application.properties에 직접 적은 enc##는 복호화 대상이 아니다(암호화 비밀은 CONFIG_PATH의
glue.properties에 두는 것이 정석).
- See Also:
-
Field Summary
Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE -
Constructor Summary
ConstructorsConstructorDescriptionGlueEnvironmentPostProcessor(org.springframework.boot.logging.DeferredLogFactory logFactory) Spring Boot가 spring.factories 등록을 보고 이 생성자(DeferredLogFactory 주입)로 인스턴스를 만든다. -
Method Summary
Modifier and TypeMethodDescriptionintgetOrder()application.properties(ConfigData)가 환경에 먼저 올라온 뒤 실행되도록 가장 낮은 우선순위로 둔다.voidpostProcessEnvironment(ConfigurableEnvironment environment, org.springframework.boot.SpringApplication application)
-
Constructor Details
-
GlueEnvironmentPostProcessor
public GlueEnvironmentPostProcessor(org.springframework.boot.logging.DeferredLogFactory logFactory) Spring Boot가 spring.factories 등록을 보고 이 생성자(DeferredLogFactory 주입)로 인스턴스를 만든다.- Parameters:
logFactory- 지연 로그 팩토리
-
-
Method Details
-
postProcessEnvironment
public void postProcessEnvironment(ConfigurableEnvironment environment, org.springframework.boot.SpringApplication application) - Specified by:
postProcessEnvironmentin interfaceorg.springframework.boot.EnvironmentPostProcessor
-
getOrder
public int getOrder()application.properties(ConfigData)가 환경에 먼저 올라온 뒤 실행되도록 가장 낮은 우선순위로 둔다. (그래야 glue.config.path를 읽을 수 있고, glue.properties가 application.properties보다 아래 층에 놓인다.)
-