복붙노트

[SPRING] spring.profiles.active가 설정 한 여러 개의 Spring 환경 프로파일이있는 경우 우선 순위는 무엇입니까?

SPRING

spring.profiles.active가 설정 한 여러 개의 Spring 환경 프로파일이있는 경우 우선 순위는 무엇입니까?

다중 Spring 활성 프로파일이 지정되었을 때 우선 순위가 무엇인지 궁금합니다.

기본 프로파일을 활성화하되 dev 프로파일을 사용하여 다른 프로파일을 선택할 수있는 몇 가지 동일한 요소 (예 : bean)가있을 때이를 재정의한다고 가정 해보십시오.

예를 들어 두 개의 PropertySourcesPlaceholderConfigurer 빈이 "default"및 "dev"값으로 환경 프로파일로 구성되어 있다고 가정 해보십시오.

다음 프로파일 활성화를 사용하는 경우 : -Dspring.profiles.active = "default, dev"

dev 프로필이 기본 프로필보다 우선 적용됩니까?

위의 행동을 어떻게 달성 할 수 있습니까?

해결법

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

    1.spring.profiles.active 시스템 속성의 프로필 순서는 중요하지 않습니다. "우선 순위"는 프로파일에 고유 한 bean을 포함하여 bean의 선언 순서에 의해 정의되며 마지막 bean 정의가 우선합니다.

    spring.profiles.active 시스템 속성의 프로필 순서는 중요하지 않습니다. "우선 순위"는 프로파일에 고유 한 bean을 포함하여 bean의 선언 순서에 의해 정의되며 마지막 bean 정의가 우선합니다.

    예제를 사용하여 -Dspring.profiles.active = "default, dev"가 사용되는 경우 기본 프로파일의 props bean이 여기에 사용됩니다. 단순히 bean의 마지막 활성 정의이기 때문입니다.

    <beans profile="dev">
        <bean id="props" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
            <property name="location" value="classpath:META-INF/dev.properties"/>
        </bean>
    </beans>
    <beans profile="default">
        <bean id="props" class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
            <property name="location" value="classpath:META-INF/default.properties"/>
        </bean>
    </beans>
    

    빈의 순서를 반전하면 spring.profiles.active에서 프로파일이 정렬되는 방식에 관계없이 dev 버전이 사용됩니다.

    는 bean id를 명시 적으로 지정할 수 없기 때문에 사용하지 않았으므로 두 개 이상을 사용하면 어떤 동작을 보일지 확신 할 수 없습니다. 두 속성에 의해 정의 된 속성은 마지막 정의를 사용하지만 각 파일에 고유 한 속성은 그대로 유지 될 수 있도록 속성이 병합 될 것이라고 생각합니다.

    그렇지 않으면, 내 경험상 일반적으로 다음 순서로 콩을 정의 할 것이다.

    이렇게하면 다른 프로필과 함께 사용하면 테스트 프로필 빈이 우승 할 수 있습니다. 그렇지 않으면 프로파일에 따라 환경 특정 bean 또는 기본 bean을 사용하게됩니다.

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

    2.superEB가 맞다. 프로파일의 순서는 빈에 관계가 없다. 선언 순서가 더 중요하지만, 프로파일 기반의 설정 파일을 사용한다면 순서가 중요하다는 사실을 염두에 두라.

    superEB가 맞다. 프로파일의 순서는 빈에 관계가 없다. 선언 순서가 더 중요하지만, 프로파일 기반의 설정 파일을 사용한다면 순서가 중요하다는 사실을 염두에 두라.

  3. from https://stackoverflow.com/questions/23617831/what-is-the-order-of-precedence-when-there-are-multiple-springs-environment-pro by cc-by-sa and MIT license