Spring IoC Container 6부
Spring IoC 컨테이너와 빈 - 6부
백기선님의 강의인 Spring 프레임워크 핵심 기술 편의 IoC Container
를 학습한 내용을 정리한 글
Environment
Application Context는 여러 인터페이스를 상속받아 구현하고 있다.
그 중에서도 EnvironmentCapable
인터페이스에 대해 알아보자.
EnvironmentCapable
은 두가지 기능을 제공하는데 그 중 Profile
에 대해서 먼저 알아보자
프로파일이란?
빈들의 묶음
큰 회사에서는 일반적으로 개발용,테스트용,Production용 여러가지 설정파일을 관리한다.
각각의 환경에 따라 다른 빈들을 사용해야하는 경우 프로파일을 사용한다.
ApplicationContext는 getEnvironment() 메소드를 호출하여 Environment
타입 객체를 가져올 수 있다. (당연하다 ApplicationContext는 EnvironmentCapable를 상속받고 있으니까)
Environment
객체의 getActiveProfile()
메소드를 호출하면 현재 설정된 Profile을 가져올 수 있다.
@Profile("test")
@Configuration
public class TestConfiguration{
@Bean
public BookRepository bookRepository() {
return new TestBookRepository();
}
}
@Profile에 등록한 이름을 통해 Spring이 구동될 때 등록한 이름에 따라 빈을 사용할 수 있게 된다.
Profile을 설정하는 방법은 Intellij 기준 실행 argument에
-Dspring.profiles.active="test,A,B,..."
를 추가함으로써 profile 설정이 가능하다.
물론 @Component에도 동일한 방법으로 사용 가능하다.
프로파일 표현식
- !(not) 사용 가능
- e.q. @Profile(“!test”) test가 아닌 Profile의 경우 모두 적용
- & (and) 사용 가능
(or) 사용 가능
Reference
인프런 백기선님의 스프링 프레임워크 핵심 기술 강좌