복붙노트

[SPRING] 여러 위치에있는 Spring 속성 자리 표시 자 구성 자의 속성 확인 순서는 무엇입니까?

SPRING

여러 위치에있는 Spring 속성 자리 표시 자 구성 자의 속성 확인 순서는 무엇입니까?

내가 구성을 가지고 있다고하자.

    <bean id="batchJobProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>first.properties</value>
            <value>second.properties</value>
        </list>
    </property>
</bean>

first.properties에는 "my.url = first.url"속성이 있습니다. second.properties에는 "my.url = second.url"속성이 있습니다.

그래서 어떤 값이 "myUrl"bean에 주입 될 것인가? 속성 정의의 정의 된 순서가 있습니까?

해결법

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

    1.PropertiesLoaderSupport.setLocation 상태를위한 javadoc

    PropertiesLoaderSupport.setLocation 상태를위한 javadoc

    따라서 second.properties의 my.url 값은 first.properties의 my.url 값을 대체합니다.

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

    2.마지막 하나가 이긴다.

    마지막 하나가 이긴다.

    props1.properties를 다음과 같이 가정합니다.

    prop1=val1
    

    및 props2.properties

    prop1=val2
    

    및 context.xml

    <context:annotation-config />
    <bean id="batchJobProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>/props1.properties</value>
                <value>/props2.properties</value>
            </list>
        </property>
    </bean>
    <bean class="test.Test1" /> 
    

    그때

    public class Test1 {
        @Value("${prop1}")
        String prop1;
    
        public static void main(String[] args) throws Exception {
            ApplicationContext ctx = new ClassPathXmlApplicationContext("/test1.xml");
            System.out.println(ctx.getBean(Test1.class).prop1);
        }
    
    }
    

    인쇄물

    val2

    문맥을 다음과 같이 바꾼다면

            <list>
                <value>/props2.properties</value>
                <value>/props1.properties</value>
            </list>
    

    같은 시험 인쇄

    val1
    
  3. from https://stackoverflow.com/questions/14192373/what-is-property-resolution-order-in-spring-property-placeholder-configurer-with by cc-by-sa and MIT license