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

인프런 백기선님의 스프링 프레임워크 핵심 기술 강좌



© 2022. by minkuk

Powered by minkuk