-
스프링부트 profile 설정 방법자바/스프링 2021. 10. 3. 22:37
Spring Profiles는 환경에 따라 서로 다른 어플리케이션 설정을 사용할 수 있도록 하는 기능이다.
@Component, @Configuration, @ConfigurationProperties 어노테이션이 사용된 스프링 빈은
@Profile 어노테이션을 추가하여 특정 profile에서만 로드되도록 할 수 있다.
@Configuration(proxyBeanMethods = false) @Profile("production") public class ProductionConfiguration { ... }
또한 "application.properties" 등의 설정 데이터에서 활성화할 profile을 지정할 수 있다.
spring.profiles.active=dev,test
활성화 할 profile이 지정되지 않은 경우 기본 profile이 사용된다.
기본 profile의 이름은 "default"이다. 기본 profile의 이름은 변경할 수 있다.
spring.profiles.default=none
profile은 커멘드 라인에서도 활성화할 수 있다.
java -jar ... --spring.profiles.active=cat,dog
커멘드 라인의 인자는 설정 데이터(.properties, .yml)보다 우선순위가 높은 PropertySource이다.
따라서 설정 데이터와 중복되는 속성을 override한다.
즉, 커멘드 라인에서 profile을 활성화하면, "application.properties"에서 active한 profile은 활성화되지 않는다.
profile별로 설정 데이터(.properties, .yml) 파일을 만들어서 사용할 수 있다.
네이밍 컨벤션은 "application-{profile}"이다. 확장자는 properties나 yml 둘 다 사용 가능하다.
profile별 설정 데이터는 해당 profile이 활성화될 때에만 로딩된다.
profile별 설정 데이터 파일에서 "spring.profiles.active" 속성 값에 자기 자신의 profile을 지정하면 오류가 발생한다.
# application-tiger.properties spring.profiles.active=tiger # 오류 발생
profile이 활성화되면 자동으로 해당 설정 데이터 파일이 로딩된다.
profile별 설정 데이터(.properties, .yml) 파일이 존재할 때,
설정 데이터 파일이 적용되는 순서는 profile이 활성화된 순서와 같다.
예를 들어 "--spring.profiles.active=cat,dog"과 같이 profile이 활성화되었다고 가정한다.
어플리케이션 설정은 아래와 같은 순서로 적용된다.
1. 기본 설정 데이터 파일: application.properties
2. application-cat.properties
3. application-dog.properties
이 상황에서 모든 설정 파일에 같은 속성이 있다면,
"application-dog.properties"에 설정된 속성이 앞선 설정 데이터 파일들을 override하여 적용된다.
출처:
https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.profiles
'자바 > 스프링' 카테고리의 다른 글
Plain jar vs Executable jar(feat. plain jar 생성 방지) (0) 2021.11.08 Spring Data JPA 페이징과 정렬 (0) 2021.10.12 Spring Data JPA DTO 사용 시 매핑 에러가 발생할 때(org.springframework.data.mapping.PropertyReferenceException: No property ...) (0) 2021.10.08 스프링부트 H2 데이터베이스 설정 방법 (1) 2021.10.04