봄 (19) - 프로필 (2)

더 읽 기
19.2 사용 할 프로필 지정
앞에서 프로필 의 지정 을 소 개 했 습 니 다. 프로필 을 지정 한 후에 해당 하 는 내용 은 특정한 프로필 에서 만 유효 하 다 는 것 을 알 고 있 습 니 다.현재 응용 프로그램 이 어떤 프로필 을 사용 하 는 지, 어떤 프로필 을 사용 하 는 지 지정 해 야 합 니 다.전문 적 으로 활성화 라 고 합 니 다. 즉, 활성화 상태 에 있 는 profflee 에 대응 하 는 정의 만 효력 이 발생 합 니 다. 물론 지정 하지 않 은 profflee 의 정의 도 포함 되 어 있 습 니 다.
Spring 에서 어떤 profflee 를 활성화 하 는 지 는 인자 spring. profiles. active 를 통 해 지정 합 니 다. 시스템 환경 변수, JVM 인자 또는 웹. xml 에 있 는 ServletContext 인자 로 정의 할 수 있 습 니 다.다음은 JVM 매개 변 수 를 통 해 활성 화 된 profflee 를 dev 로 지정 한 예제 입 니 다.
-Dspring.profiles.active=dev

다음은 웹. xml 파일 에서 ServletContext 의 매개 변 수 를 통 해 활성 화 된 profflee 를 지정 하 는 예제 입 니 다. 활성 화 된 profflee 는 dev 입 니 다.
<context-param>
	<param-name>spring.profiles.activeparam-name>
	<param-value>dev param-value>
context-param>

물론 여러 프로필 을 동시에 활성화 하고 여러 프로필 을 동시에 활성화 할 때 여러 프로필 사 이 를 쉼표 로 분리 할 수 있 습 니 다.다음 예 는 dev 와 production 두 개의 profile 을 동시에 활성화 하 는 것 을 나타 낸다.(기타 JVM 매개 변수 지정 등 은 같은 규칙 입 니 다)
<context-param>
	<param-name>spring.profiles.activeparam-name>
	<param-value>dev,productionparam-value>
context-param>

spring. profiles. active 인 자 를 사용 하여 지정 하 는 것 외 에 프로그램 에서 동적 으로 지정 하여 활성화 하 는 profflee 도 사용 할 수 있 습 니 다.다음 예제 에서 저 희 는 현재 applicationContext 의 Environment 대상 을 가 져 온 다음 에 이 대상 을 통 해 활성 화 된 profile 을 production 으로 지정 합 니 다.프로그램 이 활성 화 된 profflee 를 지정 할 때 빈 applicationContext 대상 을 구축 한 다음 이 대상 의 Environment 대상 을 통 해 활성 화 된 profflee 를 지정 한 다음 에 해당 하 는 bean 정의 에 대응 하 는 자원 위 치 를 지정 하고 마지막 으로 refresh () 방법 을 호출 하여 applicationContext 대상 이 해당 하 는 bean 정 의 를 해석 하도록 해 야 합 니 다.
	ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext();
	context.getEnvironment().setActiveProfiles("production");
	context.setConfigLocation("classpath:applicationContext.xml");
	context.refresh();

여러 개의 활성 화 된 profflee 를 동시에 지정 해 야 한다 면 setActiveProfiles () 방법 에 여러 개의 인 자 를 지정 할 수 있 습 니 다. 해당 하 는 인 자 는 가 변 적 인 매개 변수 입 니 다.
	context.getEnvironment().setActiveProfiles("dev","production");

19.3 기본 프로필
또한, 우 리 는 응용 프로그램 에 기본 프로필 을 지정 할 수 있 습 니 다.만약 에 하나의 가 profflee 를 지정 하지 않 았 고 상급 도 profflee 를 지정 하지 않 았 다 면 에서 정 의 된 모든 bean 은 어떤 profflee 를 활성화 하 든 사용 할 수 있다 는 것 을 알 고 있 습 니 다.기본 프로필 의 개념 은 우리 가 기본 프로필 을 정의 한 다음 에 지정 한 프로필 을 기본 프로필 로 한다 면 활성 프로필 이 없 을 때 기본 프로필 에 대응 하 는 bean 은 모두 사용 할 수 있 지만 활성 프로필 이 있 으 면 기본 프로필 에 대응 하 는 것 은 사용 할 수 없습니다.기본 bean 정의 가 profflee 를 지정 하지 않 으 면 해당 하 는 bean 정 의 는 모든 상황 에서 사용 할 수 있 습 니 다. profflee 를 바 꾸 면 같은 유형의 bean 정의 가 존재 할 수 있 습 니 다.또는 우 리 는 기본 적 인 bean 정 의 를 특정한 bean 과 다른 두 개의 profflee 로 정의 합 니 다. 이러한 결 과 는 활성 화 된 profflee 를 지정 해 야 합 니 다.그래서 기본 profile 이라는 메커니즘 도 매우 유용 하 다. 즉, 우 리 는 기본 profile 을 통 해 기본 bean 정 의 를 정의 한 다음 에 profile 을 바 꾸 어 대응 하 는 bean 정 의 를 바 꿀 수 있다.
Spring 에서 기본 프로필 의 이름 은 'default' 입 니 다. 즉, 기본 적 인 상황 에서 우 리 는 하나의 프로필 을 default 으로 지정 합 니 다. 즉, 기본 프로필 에 대응 하 는 것 을 표시 합 니 다.다음 예제 에서 우 리 는 활성화 상태 에 있 는 profflee 가 없 을 때 hello 를 정의 합 니 다.default 는 사용 할 수 있 으 며, production 이라는 profile 이 활성화 상태 일 때 helloproduction 은 사용 가능 합 니 다.

<beans profile="production">
	<bean id="hello_production" class="com.app.Hello"/>
beans>


<beans profile="default">
	<bean id="hello_default" class="com.app.Hello"/>
beans>

19.3.1 기본 프로필 의 이름 변경
기본 profile 의 이름 은 "default" 입 니 다. spring. profiles. default 인 자 를 통 해 변경 할 수 있 습 니 다. 변경 방식 은 인자 spring. profiles. active 를 통 해 활성 화 된 profile 과 유사 합 니 다.
1. 다음은 JVM 매개 변 수 를 통 해 기본 profile 을 production 으로 지정 합 니 다.
	-Dspring.profiles.default=production

2. 다음은 ServletContext 의 매개 변 수 를 통 해 기본 profile 을 production 으로 지정 합 니 다 (ContextLoader Listener 에서 사용 할 수 있 습 니 다).
<context-param>
	<param-name>spring.profiles.defaultparam-name>
	<param-value>productionparam-value>
context-param>

이러한 직접 매개 변수 spring. profiles. default 을 통 해 기본 profile 을 지정 하 는 경우 에 도 여러 개의 profile 을 동시에 지정 할 수 있 고 여러 개의 profile 사 이 를 쉼표 로 구분 할 수 있 습 니 다.
3. 응용 프로그램 Context 에 대응 하 는 Environment 대상 을 프로그램 화 된 방식 으로 가 져 온 다음 에 해당 하 는 기본 profile 을 설정 할 수 있 습 니 다.다음 예제 에 서 는 기본 프로필 을 'default' 과 'production' 으로 설정 합 니 다.setDefault Profiles () 방법 은 가 변 적 인 파 라 메 터 를 받 기 때문에 여러 개의 기본 프로필 을 동시에 지정 할 수 있 습 니 다.
	ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext();
	context.getEnvironment().setDefaultProfiles("production", "default");
	context.setConfigLocation("classpath:applicationContext.xml");
	context.refresh();

(주: 본 고 는 Spring 4.1.0 을 바탕 으로 쓴 것 이다)

좋은 웹페이지 즐겨찾기