프로필
목적
- 개발목적 설정과 실 서비스 목적의 설정을 구분해서 작성하는 것
- 개발 중 운영중인 DB에 접근할 수 없다. → 개발용 DB로 접근
- 실제 서버에 배포하려면 실 서시브 환경에 맞는 JDBC 연결 정보 사용해야함
프로필 사용하기
1-1. @Configuration 에서 프로필 사용 @Profile
설정을 다음과 같이 했다고 가정
- 로컬 dev
@Configuration
@Profile("dev")
public class DsDevConfig {
@Bean(destroyMethod = "close")
public DataSource dataSource() {
...
}
}
- 실 서비스 real
@Configuration
@Profile("real")
public class DsDevConfig {
@Bean(destroyMethod = "close")
public DataSource dataSource() {
...
}
}
특정 프로필 선택하기
1. setActiveProfiles
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.getEnvironment().setActiveProfiles("dev");
context.register(MemberConfig.class, DsDevConfig.class, DsRealConfig.class);
context.refresh();
- DsDevConfig 클래스와 DsRealConfig 클래스에 정의되어있는 dataSource 중에서 dev 프로필에 속하는 DsDevConfig에 정의된 “dataSource” 빈을 사용한다.
- register : 설정 파일 목록 지정
- refresh : 컨테이너 초기화
두 개 이상의 프로필을 활성화한다면? 그냥 2개 나열해 입력하면 된다!
context.getEnvironment().setActiveProfiles("dev", "mysql");
2. spring.profiles.active
시스템 프로퍼티에 사용할 프로필 값 지정
- 명령행에서 -D 옵션 이용
- System.setProperty() 이용
java -Dspring.profiles.active=dev main.Main
Configuration으로 properties 사용하기
- PropertySourcesPlaceholderConfigurer 빈 설정 등록
- 프로퍼티 파일 목록을 인자로 전달받기
- Resource 타입을 이용해 파일 경로 전달
- @Value 애노테이션으로 프로퍼티 값 사용 사용
// db.properties
@Configuration
public class DsDevConfig {
@Value("${db.driver}")
private String driver;
@Bean(destroyMethod = "close")
public DataSource dataSource() {
...
}
}
'공부 > Spring' 카테고리의 다른 글
JPA 시작하기 (0) | 2022.06.20 |
---|---|
JPA 소개 (0) | 2022.06.20 |
[chap16] JSON 응답과 용청 처리 (0) | 2022.06.09 |
[chap15] 간단한 웹 어플리케이션의 구조 (0) | 2022.06.09 |
[chap14] MVC 4 : 날짜 값 변환, @PathVariable, 익셉션 처리 (0) | 2022.06.02 |
댓글