본문 바로가기
프로그래밍/SPRING

[스프링기본 : IoC 컨테이너] Environment - Profile

by hyunleeM 2019. 10. 10.

Environment

ApplicationContext(EnvironmentCapable 상속)가 가지고 있는 기능중 하나로 어플리케이션의 속성과 환경등을 다루는 인터페이스.

 

 

 

Profile

Profile은 환경에 따라 사용해야 하는 빈들이 다른데 이런 빈들의 구성을 쉽게 할수 있도록 도와주는 기능.

예를들면 개발, 테스트, 운영 별로 사용해야하는 빈이나 내용이 다르다고 하면 Profile을 통해 관리해주면 쉽게 관리 할수 있다.

 

Environment 객체로 현재 설정된 Profile 확인하기

ApplicationContext가 상속하는 EnviromentCapable 내부에는 getEnviroment 메소드를 가지고 있다 이를 이용해보자.

 

그런데 사실 지금 Profile 설정을 하지는 않았다. 그렇다면 값이 어떻게 나올까?

 

Active는 없고 Default 는 default Profile이 들어있다.

실제로 default Profile을 정의 한적은 없다. 그렇다는건 ?

Profile설정을 하지 않은 빈들은 기본적으로 default Profile에 들어가게된다.

 

 

@Profile 어노테이션 사용하여 직접 정의

클래스 정의

  • @Configration @Profile("test")
  • @Component @Profile("test")

메소드 정의

  • @Bean @Profile("test")

Profile 설정 방식

SampleService.java

profile을 test로 정의한 클래스 파일

 

AppRunner.java

Profile을 설정하지 않았다 sampleService를 잘 찾을까?

결과

못찾는다 그럼 Profile 설정을 해주면 잘 찾을까?

이클립스에서 Profile설정을 해준뒤에 실행해보자

 

결과

잘찾는다.!!

이런식으로 실제 운영환경에서는 이런식으로 개발 , 테스트, 운영 으로 구분지어서 빈들을 사용하기도 한다.

 

 

Profile 표현식

! : not

& : and

| : or

profile설정을 할때 위와같은 논리연산을 사용할수 있다.

ex)

@Profile("!prod")

@Profile("test | prod")

@Profile("test & !prod")

 

 

참고자료

https://www.inflearn.com/course/spring-framework_core

 

스프링 프레임워크 핵심 기술 - 인프런

이번 강좌는 스프링 부트를 사용하며 스프링 핵심 기술을 학습합니다 따라서 스프링 부트 기반의 프로젝트를 사용하고 있는 개발자 또는 학생에게 유용한 스프링 강좌입니다. 초급 웹 개발 Java Spring 온라인 강의

www.inflearn.com

 

댓글