개발, 운영 서버를 구분하기 위해 profile을 설정하며,
아래와 같이 4가지의 host가 있음
host | profile |
---|---|
개발 | dev |
테스트 | stage |
알파 | alpha |
상용 | prod |
spring:
profiles:
active:
- local
group:
local:
- site-local
- db-local
dev:
- site-dev
- db-dev
include:
- db
- my-service
- site
profile = local 일 경우
---을 이용하면 .yml 파일을 구분할 수가 있음
yml의 if 문으로 사용 가능
spring:
profiles:
active: test
---
spring:
profiles: dev
server:
port: 8080
---
spring:
profiles: test
server:
port: 8090
위의 예제로 보아 윗 부분은 defualt(application.yml),
바로 아래는 applicaton-dev.yml 역할을 하고,
맨마지막은 applicaton-test.yml 역할을 함
<springProfile name="test">
<property name="LOG_LEVEL" value="INFO" />-->
</springProfile>
<springProfile name="dev">
<property name="LOG_LEVEL" value="DEBUG" />-->
</springProfile>
<property resource="application.yml"/>
<if condition='"${spring.profiles.active}".equals("dev")'>
<then>
<property name="LOG_LEVEL" value="DEBUG" />
</then>
<else>
<property name="LOG_LEVEL" value="INFO" />
</else>
</if>
System.getProperty("spring.profiles.active");
import org.springframework.core.env.Environment;
@Component
@RequiredArgsConstructor
public class Test {
private Environment environment;
public String[] getActiveProfiles() {
return environment.getActiveProfiles();
}
}
@Value("${spring.profiles.active}")
private String activeProfile;
@Profile("dev") // dev
public void Test
@Profile("!dev") // dev 제외
public void Test
@Profile({"qa", "stg"}) // qa, stg
public void Test
@Profile("!local | (qa & stg)") // local 아니거나 qa, stg
public void Test
@ActionProfiles("dev")
public class Test
Spring Boot profiles 설정하기
Spring Boot - Profile에 따른 properties(yml) 파일 설정하기
자바 스프링에서 Profile 정보 가져오기 (Spring Profiles Active)