EnvironmentPostProcessor랑 PropertySourceLocator 을 이용해서

기동 시점에 필요한 property 정보를 넘겨야 하는 일이 있었다. 

그래서 spring이 구동될때 언제 어떤 정보가 있는지가

중요해서 정리 보았다.

 

Spring Boot/Cloud 설정 적용 순서 (핵심만)

 

  1. bootstrap.yml (Spring Cloud 있을 때만, 부트스트랩 컨텍스트에서 먼저 읽음)
  2. PropertySourceLocator(외부에서 값을 받아와 환경에 추가할 수 있음, 부트스트랩 단계)
  3. EnvironmentPostProcessor(application.yml 적용 , 환경 가공)
  4. application.yml/properties(일반적인 설정)
  5. ApplicationContext 생성, @Bean 등등

 

1. SpringApplication 생성
2. ApplicationRunListeners 실행
   └ ApplicationStartingEvent 발생

3. prepareEnvironment()
   └ EnvironmentPostProcessor 실행 (1차, Main Context)
      → META-INF/spring.factories에 등록된 클래스
      → 예: AnyEnvironmentPostProcessor (1차 실행)

4. ConfigDataEnvironmentPostProcessor 실행
   └ application.yml, profile 등 config data 로드

5. Spring Cloud: BootstrapApplicationListener 작동
   └ bootstrap context 생성 (내부적으로 SpringApplication 또 만듦)
      └ 이 과정에서 EnvironmentPostProcessor 다시 실행 (2차, Bootstrap Context)
         → 예: AnyEnvironmentPostProcessor (2차 실행)
      └ PropertySourceLocator 실행
         → 예: AnyPropertySourceLocator.locate()
         → 외부 설정 서버에서 PropertySource 받아옴
      └ 받은 PropertySource를 원래(main) context에 merge

6. main context 구성 재개
   └ 받은 property를 포함해 Environment 구성됨

7. ApplicationContext 초기화, ApplicationRunner 실행 등...

'DEVELOP > Backend' 카테고리의 다른 글

@Mock vs @Spy vs @InjectMock vs @MockBean  (0) 2025.11.21
Spring AOP  (2) 2025.07.14
LLM Application 개발 이란?  (0) 2023.12.07
LangChain 이란?  (2) 2023.12.04
jsonString의 다형성 (feat. Gson)  (0) 2022.04.05

+ Recent posts