더북(TheBook)

파일명에 와일드카드를 붙여 인수로 넘겼으므로 ctx.load() 메서드는 kindergarten-config.xml 파일과 highschool-config.xml 파일을 둘 다 읽어 들입니다. 하지만 이 예제에서는 JVM 인수로 -Dspring.profiles.active="kindergarten"를 전달할 것이므로, 설정된 profile 애트리뷰트에 따라 스프링이 kindergartenconfig.xml에 정의된 빈의 인스턴스만을 생성할 것입니다. JVM 인수를 설정하고 프로그램을 실행하면 다음과 같은 결과가 나타납니다.

Food: Milk
Food: Biscuits

 

이 실행 결과는 유치원 대상 공급자 구현체가 생산해야 할 점심 세트와 일치합니다. 이제 앞 코드를 실행할 때의 프로파일 인수를 고등학교(-Dspring.profiles.active="highschool")로 바꿔 실행하면 다음과 같은 결과가 나타날 것입니다.

Food: Coke
Food: Hamburger
Food: French Fries

 

물론 코드에서 ctx.getEnvironment().setActiveProfiles("kindergarten")를 호출해 사용할 프로파일을 프로그래밍으로 설정할 수도 있습니다. 추가로 클래스에 간단히 @Profile 애너테이션을 적용해 자바 구성으로 프로파일을 활성화할 클래스를 등록할 수도 있습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.