복붙노트

[SPRING] Spring : 프로필에 따라 다른 속성 파일 삽입

SPRING

Spring : 프로필에 따라 다른 속성 파일 삽입

첫째, 일부 상황 :

저는 현재 Google의 AppEngine (GAE)에서 Spring 프레임 워크를 사용하여 Google 서비스 중 일부에서 일부 데이터를 가져 오는 프로젝트를 진행하고 있습니다. 그렇게하기 위해 Google의 OAuth 시설을 사용합니다. 이를 위해 내 응용 프로그램과 관련된 clientSecret 및 clientId를 사용해야합니다. 이것들은 정적 인 설정 값이므로 Spring의 (문서에 링크) 기능을 사용하여 이러한 값을 적절한 클래스에 삽입합니다.

XML 설정 :

<util:properties id="googleProperties" location="WEB-INF/google.properties" />

수업 사용 :

@Value("#{googleProperties['google.data.api.client.id']}")
private String clientId;

내 질문:

결과적으로 clientId와 clientSecret 값은 App Engine에 배포 할 때 (내 로컬 컴퓨터에서) 개발과 다를 필요가 있습니다. 배포 할 때 속성 파일의 값을 변경하지 않고도이를 해결하기 위해 제작 및 개발을위한 여러 속성 파일을 지정할 수있는 Spring의 구성 프로필을 살펴 보았습니다. 스프링 프로파일이 문서를 기반으로 어떻게 작동하는지에 대한 아이디어가 있지만,이 특별한 상황에서 적절한 해결책이 무엇인지 확신 할 수는 없습니다.

즉, 내 응용 프로그램이 로컬로 배포되는지 또는 GAE에 배포되는지에 따라 다른 등록 정보 파일을 어떻게 삽입 할 수 있습니까?

해결법

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

    1.몇 가지 옵션 :

    몇 가지 옵션 :

    접두어를 사용하여 환경 별 속성을 제어 할 수 있습니다.이 작업은 시스템 변수를 사용하여 수행 할 수 있습니다.

     <util:properties id="googleProperties" 
                      location="WEB-INF/${ENV_SYSTEM:dev}/google.properties" />
    

    이 경우 항상 아래에 표시됩니다.

     <util:properties id="googleProperties" 
                      location="WEB-INF/dev/google.properties" />
    

    ENV_SYSTEM 시스템 변수가 설정되어 있지 않으면 기본적으로. 예를 들어 qa로 설정하면 자동으로 아래에 표시됩니다.

     <util:properties id="googleProperties" 
                      location="WEB-INF/qa/google.properties" />
    

    또 다른 방법은 bean을 특정 프로파일로 만드는 것입니다. 예 :

    <beans profile="dev">
        <util:properties id="googleProperties" 
                         location="WEB-INF/google-dev.properties" />
    </beans>
    
    <beans profile="qa">
        <util:properties id="googleProperties" 
                         location="WEB-INF/google-qa.properties" />
    </beans>
    

    적절한 googleProperties는 프로필 집합에 따라로드됩니다. 예를 들어 WEB-INF / google-dev.properties를로드합니다.

    GenericXmlApplicationContext ctx = new GenericXmlApplicationContext();
    ctx.getEnvironment().setActiveProfiles( "dev" );
    ctx.load( "classpath:/org/boom/bang/config/xml/*-config.xml" );
    ctx.refresh();
    
  2. ==============================

    2.당신은 올바른 길을 가고 있습니다, 우리의 어플리케이션에서 우리는 동일한 시나리오를 가지고 있으며 우리는 "프로파일"을 사용하여 속성을 관리합니다. 우리는 프로덕션 용으로 두 개의 구성 파일을 사용하고 그에 따라 설정된 프로파일로 테스트 용으로 두 개의 구성 파일을 사용합니다.

    당신은 올바른 길을 가고 있습니다, 우리의 어플리케이션에서 우리는 동일한 시나리오를 가지고 있으며 우리는 "프로파일"을 사용하여 속성을 관리합니다. 우리는 프로덕션 용으로 두 개의 구성 파일을 사용하고 그에 따라 설정된 프로파일로 테스트 용으로 두 개의 구성 파일을 사용합니다.

  3. from https://stackoverflow.com/questions/9435246/spring-injecting-different-properties-file-according-to-profile by cc-by-sa and MIT license