복붙노트

[SPRING] 다중 Spring PropertyPlaceholderConfigurer 동시에

SPRING

다중 Spring PropertyPlaceholderConfigurer 동시에

나는 두 개의 프로젝트를 가지고 있는데 그 중 하나 (서비스)에는 두 번째 프로젝트 (코어)가 포함됩니다. 아래 핵심 프로젝트 내에서이 PropertyPlaceholderConfigurer를 정의했습니다.

<bean id="propertyConfigurer" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
    <property name="locations">
         <list>
             <value>classpath:appConfig.properties</value>
         </list>
    </property>
</bean>

그리고 appConfig.properties와 다른 것들을 포함하여 상위 프로젝트에서 Core 자리 표시자를 확장하려고합니다. 내가 찾은 유일한 방법은 상위 레벨에 다른 다른 bean (다른 ID)을 정의하고 새로운 bean을 포함시키는 것입니다.

<bean id="servicesPropertyConfigurer" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
    <property name="locations">
          <list>
                <value>classpath:swagger.properties</value>
          </list>
    </property>
</bean>

하지만 appConfig.properties를 찾을 수 없다는 것을 알았습니다. 동시에이 PropertyPlaceholderConfigurer 중 하나만 사용하고있는 것 같습니까? propertyConfigurer 상위의 모든 리소스를 지정해야합니까? :

<bean id="servicesPropertyConfigurer" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
    <property name="locations">
          <list>
                <value>classpath:swagger.properties</value>
                <value>classpath:appConfig.properties</value>
          </list>
    </property>
</bean>

코어 빔을 동시에 사용하도록 연장 할 수 있습니까?

해결법

  1. ==============================

    1.동시에 여러 항목을 사용할 수 있지만 서로 다른 이름 / ID를 가져야 만합니다. 그 다음에 각각에 대해 다른 자리 표시 자 ($ {...})를 사용하거나 해결되지 않은 자리 표시자를 무시하도록 구성해야합니다.

    동시에 여러 항목을 사용할 수 있지만 서로 다른 이름 / ID를 가져야 만합니다. 그 다음에 각각에 대해 다른 자리 표시 자 ($ {...})를 사용하거나 해결되지 않은 자리 표시자를 무시하도록 구성해야합니다.

    클래스 정의를 사용하는 대신 네가 XML을 저장하는 네임 스페이스 ()를 사용할 것을 강력히 권장한다. (고유 한 이름을 가진 빈을 생성하므로 동시에 여러 개를 가질 수있다. ignore-unresolvable 속성을 true로 설정합니다.

    최후의 수단으로 모든 PropertyPlaceHolderConfigurer 인스턴스를 탐지하고이를 하나로 병합하고 모든 위치 / 자원을 병합 된 것으로 이동시키는 BeanDefinitionRegistryPostProcessor를 구현할 수 있습니다. 그렇게하면 여러 다른 자리 표시 자나 해결할 수없는 속성에 대해 걱정할 필요가 없습니다.

  2. ==============================

    2.이 코드를 시험해 보라.

    이 코드를 시험해 보라.

    <bean id="servicesPropertyConfigurer" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
    <property name="locations">
          <list>
                <value>classpath:swagger.properties</value>
                <value>classpath:appConfig.properties</value>
          </list>
    </property>
     <property name="ignoreUnresolvablePlaceholders" value="true"/>
    

  3. from https://stackoverflow.com/questions/18697050/multiple-spring-propertyplaceholderconfigurer-at-the-same-time by cc-by-sa and MIT license