인프런 커뮤니티 질문&답변

이안채님의 프로필 이미지
이안채

작성한 질문수

토비의 스프링 부트 - 이해와 원리

@Value와 PropertySourcesPlaceholderConfigurer

PropertySourcesPlaceholderConfigure에 대해 질문있습니다.

작성

·

273

1

 먼저 양질의 강의를 제공해주신 점에서 매우 감사하다는 말씀을 드리고 있습니다.

 

강의에서 /app란 값을 @Value로 주입을 해줬을때 ${contextPath}만 출력이 되는 부분에 질문이 있습니다.

 

제가 이해하기로는 커스텀 빈들이 먼저 주입이 되기 때문에 실제로 스프링부트의 인프라스트럭처 빈인 PropertySourcesPlaceholderConfigurer가 주입이 되지 않아 ${contextPath}가 나온다고 이해를 했습니다.

제가 이해한게 맞다면 빈의 주입 순서에 따라 @Value의 값이 달라진다는 것인데, 만약 tobyspring.config.autoconfig.PropertyPlaceholderConfig 이 클래스가 tobyspring.config.autoconfig.TomcatWebServerConfig 이 클래스보다 더 늦게 주입이 된다면 여전히 ${contextPath}가 나오게 되는지 궁금합니다!

또한 테스트를 한 번 해보고싶어서 계속해서 시도해봤지만 테스트 방법이 도저히 감이 오질않는데, 이럴 때는 어떻게 테스트를 하면 되는지 알 수 있을까요?

 

답변 1

2

토비님의 프로필 이미지
토비
지식공유자

PropertySourcesPlaceholderConfigurer는 빈으로 등록이 되었는지 아닌지만 중요합니다. 빈 등록 순서는 관련이 없습니다.

내부적으로 BeanFactoryPostProcessor를 구현하고 있는데 이를 스프링 컨테이너가 발견하면 빈 오브젝트를 생성하기 전에 빈 등록정보를 처리할 수 있게 해주는 빈을 만들 때 사용합니다. 이를 통해서 ${} 치환자로 설정된 빈의 프로퍼티를 찾아서 Environment로부터 가져오는 프로퍼티 값으로 치환해주는 것입니다.

이안채님의 프로필 이미지
이안채

작성한 질문수

질문하기