250x250
Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- deque
- set
- CSS
- 힙덤프
- union_find
- 큐
- Properties
- priority_queue
- Java
- string
- scanner
- Union-find
- dfs
- spring boot
- List
- alter
- date
- sql
- Calendar
- 스택
- GC로그수집
- 리소스모니터링
- NIO
- map
- html
- BFS
- math
- JPA
- 스프링부트
- javascript
Archives
- Today
- Total
매일 조금씩
[IoC 컨테이너와 빈] 6. Environment 1부. 프로파일 본문
728x90
반응형
[전체 목차]
- IoC 컨테이너와 빈
- 스프링 IoC 컨테이너와 빈
- ApplicationContext와 다양한 빈 설정 방법
- @Autowired
- @Component와 컴포넌트 스캔
- 빈의 스코프
- Environment - 프로파일
- Resource / Validation
- 데이터 바인딩
- SpEL
- 스프링 AOP
- Null-Safety
ApplicationContext
는 실제로 아주 많은 인터페이스들을 상속 받고 있다.
EnvironmentCapable
, ListableBeanFactory
, HierarchicalBeanFactory
... 등
그 중 하나 EnvironmentCapable
의 기능들에 대해 알아보자.
1. ApplicationContext extends EnvironmentCapable
getEnvironment()
이 EnvironmentCapable
이 제공하는 여러가지의 기능 중 하나인 프로파일에 대해서 알아볼 것이다.
2. 프로파일
- 빈들의 그룹
Environment
의 역할은 프로파일 확인 및 설정
프로파일은 빈들의 묶음이다. Maven에도 프로파일이 있고, Spring에도 프로파일이 있는데 어떠한 환경이다.
예를 들어, 어떤 환경에선 어떤 빈들을 쓰겠다는 것.
3. 프로파일 유즈케이스
- 테스트 환경에서는 A라는 빈을 사용하고, 배포 환경에서는 B라는 빈을 쓰고 싶다.
- 이 빈은 모니터링 용도니까 테스트
각각의 환경에 따라 다른 빈들을 써야 되는 경우 또는 특정 환경에서만 어떤 빈을 등록해야하는 경우 등이 요구사항을 충족시키기 위해 프로파일이 추가됨. 이는 spring의 Environment
를 통해서 사용할 수 있다.
ApplicationContext
가 EnvironmentCapable
를 상속받기 때문에
우린 ApplicationContext
의 getEnvironment()
를 호출해서 Environment
를 가져올 수 있다.
package com.test.demo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import java.util.Arrays;
@Component
public class AppRunner implements ApplicationRunner {
@Autowired
ApplicationContext ctx;
@Override
public void run(ApplicationArguments args) throws Exception {
Environment env = ctx.getEnvironment();
System.out.println(Arrays.toString(env.getActiveProfiles()));
System.out.println(Arrays.toString(env.getDefaultProfiles()));
}
}
4. 프로파일 정의하기
1) 클래스에 정의
- @Configuration @Profile("test")
- @Component @Profile("test")
아래와 같이 @Profile("test")
로 설정을 하면,
test라는 프로파일로 애플리케이션을 실행하지 않으면 아래 빈 설정 파일이 적용되지않는다.
package com.test.demo;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
@Configuration
@Profile("test")
public class TestConfiguration {
@Bean
public BookRepository bookRepository(){
return new TestBookRepository();
}
}
2) 메소드에 정의
- @Bean @Profile("test)
빈에다가 일일이 다 붙여줘야해서 불편할거다..
5. 프로파일 설정하기
- Active Profiles: "test"
- VM options: -Dspring.profiles.active="test,A,B,..."
- @ActiveProfiles (테스트용)
6. 프로파일 표현식
- ! (not)
- & (and)
- | (or)
728x90
반응형
'Spring Framework > 스프링 프레임워크 핵심 기술' 카테고리의 다른 글
[IoC 컨테이너와 빈] 6. Environment 2부. 프로퍼티 (0) | 2024.11.17 |
---|---|
[IoC 컨테이너와 빈] 5. 빈의 스코프 (0) | 2024.11.06 |
[IoC 컨테이너와 빈] 4. @Component 와 컴포넌트 스캔 (1) | 2024.11.04 |
[IoC 컨테이너와 빈] 3. @Autowired (0) | 2024.11.03 |
[IoC 컨테이너와 빈] 2. ApplicationContext와 다양한 빈 설정 방법 (0) | 2024.11.03 |