인프런에서 백기선님의 스프링부트 개념과 활용 강의를 듣고, 개인적으로 공부하며 핵심만 정리한 글입니다.
Profile 설정
Profile 은 어떤 특정환 환경에 설정 값을 다르게 하고싶을 때 사용한다.
각 Profile 들은 각각 다른 설정 값이나 각각 Bean 들을 정의한다.
그 후, 빌드 할 때, 원하는 Profile 에 맞춰 빌드할 수 있다.
예를 들어, 테스트 환경과 배포 환경을 다르게 두고 Profile 을 설정할 수 있다.
1) Profile 정의
예를 들어, 각기 다른 설정 값을 담는 두 개의 Configuration 클래스를 정의해보자.@Profile("name")
을 통해 Profile 을 정의한다.
// BaseConfiguration.java
@Profile("production")
@Configuration
public class BaseConfiguration {
@Bean
public String hello() {
return "hello"
}
}
// TestConfiguration.java
@Profile("test")
@Configuration
public class TestConfiguration {
@Bean
public String hello() {
return "hello test"
}
}
2) Profile 사용
그리고 Runner 에서 Autowired
로 위에서 정의한 Bean 을 사용해보자.
// SampleRunner.java
@Component
public class SampleRunner implements ApplicationRunner {
@Autowired
private String hello; // Bean 주입
@Overide
public void run() throws Exception {
System.out.println(hello);
}
}
위를 그대로 실행하면 에러가 난다.
왜냐하면 우리는 hello
를 특정 Profile
내 에서만 정의하였고, 아직 사용할 Profile
을 설정해주지 않았기 때문.
따라서 다음과 같이 application.properites
에 사용할 Profile
을 지정해준다.
// application.properties
spring.profiles.active = production
이제 위 러너를 실행하면, @Profile("production")
에서 정의한 Bean 이 출력이 된다.
hello
Profile 용 Properties 설정
1) 기본 사용
Profile 용 properties 를 따로 파일로 만들어 설정할 수도 있다.
네이밍 규칙은 application-<Profile 이름>.properties
이다.
예를 들어 application-production.properties
를 다음과 같이 만들어보자.
// application-production.properties
heumsi.firstName = heumsi_production
Profile 용 properties 가 Application 의 properties 보다 우선순위가 더 높기 때문에, 기존에 application.properties
에 있는 heumsi.firstName
를 application-production.properties
의 heumsi.firstName
이 오버라이딩 해버린다.
// application.properties
heumsi.firstName = heumsi
// heumsi -> heumsi_production 으로 오버라이딩
2) include
를 통해 모듈화
spring.profiles.include
를 통해 다른 .properties
파일 값을 가져올 수 있다.
예를 들어, 새로 application-productiondb.properties
를 만들었다고 해보자.
그리고 application-production.properties
를 다음과 같이 수정해보자
// application-production.properties
heumsi.firstName = heumsi_production
spring.profiles.include=productiondb
// application-productiondb.properties 값을 가져옴.
이제 production
의 profile
만 사용해도 productiondb
의 설정 값들까지 모두 활성화 된다.
'더 나은 엔지니어가 되기 위해 > 지금은 안쓰는 자바' 카테고리의 다른 글
[스프링 부트 개념과 활용] 테스트 (0) | 2020.02.04 |
---|---|
[스프링 부트 개념과 활용] 로깅 (1) | 2020.02.03 |
[스프링 부트 개념과 활용] 외부 설정 (0) | 2020.02.02 |
[스프링 부트 개념과 활용] SpringApplication (0) | 2020.01.31 |
[스프링 부트 개념과 활용] 내장 웹서버 이해와 .JAR 생성 (0) | 2020.01.31 |