@Profile
@Profile 은 애플리케이션의 환경별로 다른 빈을 등록하고, 환경에 따라 다른 설정을 적용할 수 있도록 도와주는 기능이다.
이를 통해 개발, 테스트, 운영 환경별로 다른 설정을 쉽게 관리할 수 있다.
환경은 사용자가 정의하기 나름이지만 dev(개발), test(테스트), local(로컬), prod(운영) 등이 사용된다.
환경별로 다른 파일을 만드는 경우 무조건 application-{사용할 환경 이름}.properties 형식으로 파일 이름을 지정해야한다.
@Profile 사용
- @Profile을 사용하여 특정 빈을 특정 프로파일에서만 활성화할 수 있다.
- 예를 들어, @Profile("dev")로 설정된 빈은 dev 프로파일이 활성화된 경우에만 생성되고 등록된다.
- 이를 통해 환경별로 필요한 빈을 분리해 등록
적용 예시
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
@Configuration
public class AppConfig {
@Bean
@Profile("dev")
public DataSource devDataSource() {
// 개발 환경에 맞는 DataSource 설정
}
@Bean
@Profile("prod")
public DataSource prodDataSource() {
// 운영 환경에 맞는 DataSource 설정
}
}
- @Configuration 클래스나 특정 빈 메서드에 @Profile 애너테이션을 붙여 사용
- 예시로 개발 환경에서 사용하는 DataSource 설정과 운영 환경에서 사용하는 DataSource 설정을 각각 정의할 수 있다.
활성화 방법
- 프로그램 실행 시 설정: spring.profiles.active 속성을 통해 활성화할 프로파일을 지정할 수 있다.
application.properties 설정
- .properties 로는 각 profile 에 맞는 파일을 모두 생성해야 한다.
- profiles 를 설정은 application.properties 파일에 spring.profiles.active={활성화할 환경} 을 통해 할 수 있다.
- 설정 후에 프로그램을 run 하면 profile이 동작하는 것을 확인할 수 있다.
다중 프로파일
@Profile({"dev", "prod"})
- 여러 프로파일을 동시에 지정할 수도 있다.
- 예를 들어 @Profile({"dev", "test"})라고 지정하면 dev 또는 test 프로파일이 활성화된 경우 해당 빈이 등록된다.
application.yml 설정
# applicaton.yml
server:
port: 8080
spring:
profiles:
active: local
---
# applicaton-local.yml
spring:
config:
activate:
on-profile: local
---
# applicaton-dev.yml
spring:
config:
activate:
on-profile: dev
server:
port: 8081
---
# applicaton-prod.yml
spring:
config:
activate:
on-profile: prod
활성화 방법
spring:profiles:active: local
- 활성화할 프로파일을 지정하는 속성
spring:config:activate:on-profile: dev
- 특정 프로파일이 활성화될 때만 해당 설정을 적용하도록 조건부로 설정
- 만약 active가 dev로 프로파일 설정되어 있다면 서버 포트가 8081로 설정
- 그렇지 않으면 서버 포트가 8080으로 설정
특징
- .yml 타입의 파일로는 더욱 간편하게 profile 을 설정할 수 있다.
- --- 로 프로파일 영역별 경계를 설정하는 것이 가능하다.
- 즉, 하나의 yml 파일로 여러가지 프로파일의 경계를 설정할 수 있다.
다중 프로파일
# application.yaml
spring:
profiles:
active: dev
# application-dev.yaml
spring:
profiles:
include:
- "prod"
- "local"
- 위 예제에서 dev 프로파일이 활성화되면, prod와 local 프로파일의 설정도 함께 로드된다.
'Spring' 카테고리의 다른 글
[Spring] Security JWT (0) | 2024.11.10 |
---|---|
[Spring] 세션, 토큰, 쿠키 (0) | 2024.11.08 |
[Spring] 스프링 AOP - 실무 주의사항 (1) | 2024.09.25 |
[Spring] 스프링 AOP - 로그 출력 AOP 만들기 (0) | 2024.09.24 |
[Spring] 스프링 AOP - 포인트컷 (0) | 2024.09.24 |