토비의 스프링 3.1의 내용을 요약한 자료입니다. 개념적인 설명만 요약하였으며 개념의 이해를 돕는 구체적인 코드 및 예제를 살펴보시려면 책을 참조하시기 바랍니다.
포스팅한 내용이 저작권의 문제가 발생할 수 있는 경우 게시물은 삭제/비공개 처리 될 수 있습니다.
@Profile과 @ActiveProfiles
- 스프링 3.1은 환경에 따라 빈 설정정보 파일을 여러개 쪼개고 조합하는 번거러운 방법 대신 간단히 설정정보를 구성할수 있는 방법을 제공한다.
- 실행 환경에 따른 빈 구성이 달라지는 내용을 프로파일로 저으이해서 만들고 실행 시점에 어떤 프로파일의 빈 설정을 사용할지 지정할 수 있다.
- 프로파일을 간단한 이름과 빈 설정으로 구성된다.
@Configuration
@Profile("test")
public class TestAppContext {
|
|
- 프로파일이 지정되어 있지 않은 빈 설정은 default 프로파일로 취급한다.
- 프로파일을 적용하면 모든 설정 클래스를 부담 없이 메인 설정 클래스에서 @Import 된다는 장점이 있다.
- @Profile이 붙은 설정 클래스는 현재 컨테이너의 활성 프로파일 목록에 자신의 프로파일 이름이 들어 있지 않으면 무시된다.
- 활성 프로파일이란 스프링 컨테이너를 실행할 때 추가로 지정해주는 속성인데 아직 테스트에 활성 프로파일을 지정한 적이 없으니 test 프로파일로 지정된 TestAppContext를 @Import 로 포함하려고 해봤자 소용없다.
- 활성 프로파일로 지정하려면 @ActiveProfiles 애노테이션을 사용하면 된다.
@Runwith(SpringJUnit4ClassRunner.class)
@ActiveProfiles("test")
@ContextConfiguration(classes=AppContext.class)
public class UserServiceTest {
|
|
컨테이너 빈 등록 정보 확인
- BeanFactory의 구현 클래스 중에 DefaultListableBeanFactory가 있는데 거의 대부분의 스프링 컨테이너는 이 클래스를 이용해 빈을 등록하고 관리한다.
- 스프링은 DefaultListableBeanFactory 오브젝트를 @Autowired로 주입받아서 이용하게 해준다. DetailfListableBeanFactory에는 getBeanDefinitionNames() 메소드가 있어서 컨테이너에 등록된 모든 빈 이름을 가져올 수 있고, 실제 빈과 빈 클래스 정보 등도 조회해볼수 있다.