본문 바로가기

Java/Spring Framework

Environment

반응형

ApplicationContext가 가지고 있는 기능들을 살펴보겠습니다.

 

ApplicationContext 는 Bean Factory 기능 뿐 아니라 다른 기능도 가지고 있습니다.

ApplicationContext

ApplicationContext는 위 그림과 같이 여러 인터페이스들을 상속받고 있습니다.

오늘은 그중에서도 EnvironmentCapable 에 대해서 정리하겠습니다.

 

Profile

빈들의 묶음으로 "환경"이라고 할 수 있습니다.

예를 들어 실제 상용에서는 A 환경을 쓰고 테스트할때는 B환경을 쓰려고 할때 이런 환경을 의미합니다. 

각각의 환경에서 다른 Bean을 사용해야하는 경우나 특정 Bean을 사용해야하는 경우 Profile을 사용합니다.

아무런 Profile을 설정하지 않은 경우에는 ApplicationContext.getEnvironment().getDefaultProfiles() 를 호출할 경우 default임을 볼 수 있습니다.

 

해당 Profile인 경우에만 Bean설정이 주입되도록 할 수 있습니다. 특정 Profile로 application을 실행하게 하면 해당 파일이 적용될 수 있습니다.

 

설정 방법 1

@Configuration @Profile("example")

아래 그림과 같이 "example" 인 Profile인 경우에만 BookRepository Bean주입을 하도록 설정해보겠습니다.

그런 뒤 @Autowired 로 의존성을 주입하게 되면 

 

아래와 같은 에러가 발생합니다. 이는 BookResitory라는 Bean을 찾을 수 없기 때문입니다.

BookRespository는 "example" 프로파일인 경우에만 Bean이 주입되기때문입니다.

 

그렇다면 "example" 프로파일은 어떻게 주입하는지 살펴보겠습니다.

저는 STS를 사용중이므로 STS에서 하는 방법으로 설명드리겠습니다.

Boot Dashboard 에서 현재 프로젝트 우클릭 > Open Config 선택시 아래와 같은 설정 파일이 나오게 됩니다.

이렇게 해서 Profile을 설정할 수 있습니다.

 

뿐만 아니라 Argument 탭에서 VM arguments 로도 사용가능합니다.

-Dspring.profiles.active="example"

 

그외에 Profile Class나 Method에서 선언하는 방법은 아래와 같습니다. 

설정 방법2

@Component @Profile("example")

 

설정방법3

@Bean @Profile("example")

 

프로파일에는 표현식을 사용가능합니다. ! & | 을 사용가능합니다 :)

 

 

Property

Application에 등록된 key, value 쌍의 property 에 접근할 수 있는 기능으로 계층적으로 우선순위를 가지고 접근하게 됩니다.

 

Property 설정

Boot Dashboard > open config > Arguments 에서

-Dapp.name=spirng5 로 설정합니다.

 

이렇게 하면 envrionment 에서 getProperty 메소드를 사용해 접근할 수 있습니다.

app.name 에 설정한 property 확인 가능

이 방법 외에 properties 파일을 생성하여 설정하는 방법도 있습니다. 

/resource 폴더 하위에 app.properties 파일을 생성하여 아래와 같이 설정해주면 됩니다.

 

두가지 방법 중에서 더 우선 순위를 가지는 것은 VM argument를 통한 설정입니다.

 

반응형

'Java > Spring Framework' 카테고리의 다른 글

MessageSource  (0) 2021.02.03
ApplicationEventPublisher & ResourceLoader  (0) 2020.10.25
Scope  (0) 2020.10.19
Autowired & Component  (0) 2020.10.18
기본 개념 Spring  (0) 2020.10.15