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 설정 방식
- -DSpring.profiles.active="test,A,B..."
- @ActiveProfile(테스트용)
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
'프로그래밍 > SPRING' 카테고리의 다른 글
[스프링기본 : IoC 컨테이너] messageSource (0) | 2019.10.13 |
---|---|
[스프링기본 : IoC 컨테이너] Environment - Property (0) | 2019.10.10 |
[스프링 기본 : IoC 컨테이너]빈 스코프 (0) | 2019.10.06 |
[스프링 기본 : IoC 컨테이너] @Component 와 컴포넌트 스캔 (0) | 2019.10.06 |
[스프링 기본 : IoC 컨테이너] @Autowired (0) | 2019.10.06 |
댓글