0

PropertySourcesPlaceholderConfigurer의 사용자 지정 구현이 있는데, 추가 속성 소스를로드하고이를 다른 위치 (끝에 하나, systemProperties 앞에 하나)에 배치하는 데 사용하고 있습니다. 따라서 속성은 다른 수준에서 재정의 될 수 있습니다.사용자 정의 속성을 기반으로 빈을로드하는 방법

일부 속성에 따라 콩 집합을로드해야합니다. 이를 위해 ImportBeanDefinitionRegistrar을 구현하고 있습니다.

불행히도 ImportBeanDefinitionRegistrarPropertySourcesPlaceholderConfigurer 앞에 실행됩니다. 나는 또한 동일한 결과와 함께 @ConditionalOnProperty을 사용하려고했습니다. 그리고 초기에 실행되는 PropertySourceFactory을 사용하면 그 시점에서 그 추가 속성 소스를 배치 할 수 없습니다.

ImportBeanDefinitionRegistrar 전에 또는 사용자 정의 순서로 PropertySource을 추가하거나, 또는 스프링주기의 초기에?

여기에 나는 개념을 가지고 놀기 위해 sandbox app이 있습니다. 사실 나는 속성이있는 추가 기능을 사용하기 위해 스프링 및 스프링 부트 응용 프로그램을위한 사내 라이브러리처럼 이것을 가지고 있습니다.

답변

0

EnvironmentPostProcessor을 구현하고 거기에서 속성 소스의 모든 로직을 이동해야합니다. 현재 프로젝트는 @PropertySource이 일찍 처리 될 것이라는 보장이 없다는 점에서 단절되었습니다 (실제로는 그렇지 않습니다).

+0

조언을 주셔서 감사합니다. 나는 그 접근법을 시도 할 것입니다. 불행히도 저는 Spring and Spring Boot 어플리케이션을위한 하우스 라이브러리처럼 그 개념을 구축하고 있습니다. Spring 기반 애플리케이션 (Spring Boot가없는 레거시)과 비슷한 것이 있습니까? –

+0

일반 Spring 애플리케이션을 구현하면, 컨텍스트를 로딩 할 수 있습니다. 따라서 컨텍스트를 새로 고치기 전에 환경을 사용자 정의하는 코드를 작성하십시오. [이 문제] (https://jira.spring.io/browse/SPR-14386)는 아마도 관련이 있습니다. –