스프링 부트에서는 profile을 이용해 개발 환경에 따른 설정값을 편리하게 설정할 수 있다.
간단한 예를 들어 개발 환경에서는 trace단위의 로그를, production 환경에서는 info단위의 로그를 남기고자 할 때, profile을 활용하면 설정 값을 편리하게 수정할 수 있다.
logging.level.org.springframework=info
currency-service.url=http://default.qkrmekem.com
currency-service.username=defaultusername
currency-service.key=defaultkey
logging.level.org.springframework=info
currency-service.url=http://default.qkrmekem.com
currency-service.username=defaultusername
currency-service.key=defaultkey
@ConfigurationProperties(prefix = "currency-service")
@Component
public class CurrencyServiceConfiguration {
private String url;
private String username;
private String key;
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}
@ConfigurationProperties(prefix = "currency-service")
properties값과 매칭할 때 사용되며 properties에서 설정한 prefix와 필드명을 조합해 properties값과 매칭시킨다.
예를들어 위에서는 currency-service.url값과 매칭된다.
값을 확인해보면 프로필 값을 반환하는 것을 확인할 수 있다.

그럼 다른 환경에 적용할 프로필은 어떻게 설정할까?
logging.level.org.springframework=debug
currency-service.url=http://dev.qkrmekem.com
currency-service.username=devusername
currency-service.key=devtkey
spring.profiles.active=dev

이러한 방법을 통해 개발 환경에 따른 프로필을 별도로 설정해줄 수 있다. 앞서 properties값을 직접 가져와 사용하는 방법을 알아봤는데, @ConfigurationProperties을 이용해 프로필 값을 활용할 수 있다는 것도 알게되었다!!
글 잘 봤습니다, 많은 도움이 되었습니다.