intellij, maven, gradle
Application.yml
spring:
profiles:
active: dev
logging: # 로그를 보기 위해서 추가
level:
root: info
com.coen.yamltest: debug # 설정한 package는 debug level부터 logging
Application-dev.yml
server:
port: 8080
values:
message: dev
arrays: dev0, dev1, dev2, dev3
Application-staging.yml
server:
port: 8081
values:
message: staging
arrays: staging0, staging1, staging2, staging3
Application-prod.yml
server:
port: 8082
values:
message: prod
arrays: prod0, prod1, prod2, prod3
public class YamlTestApplication {
@Value("${values.message}")
String ymlMessage;
@Value("${values.arrays}")
String[] ymlArrays;
@Value("${values.arrays}")
String ymlArraysToString;
public static void main(String[] args) {
SpringApplication.run(YamlTestApplication.class, args);
}
}
@Slf4j
public class YamlTestApplication {
@Value("....//생략
public static void main(String[] args) {
......//생략
}
@Override
public void onApplicationEvent(ApplicationReadyEvent event) {
log.debug("==============================");
log.debug("==============================");
log.debug("ymlMessage={}", ymlMessage);
log.debug("Arrays.toString(ymlArrays)={}", Arrays.toString(ymlArrays));
log.debug("ymlArrays.getClass().isArray()={}", ymlArrays.getClass().isArray());
log.debug("ymlArraysToString={}", ymlArraysToString);
log.debug("ymlArraysToString.getClass().isArray()=[{}]", ymlArraysToString.getClass().isArray());
log.debug("==============================");
log.debug("==============================");
}
}
application.yml
active가 dev로 되어있을때
application.yml
active가 staging으로 되어있을때
application.yml
active가 prod으로 되어있을때
application.yml
파일을 사용하여 다양한 설정을 할 수 있으며, 코드에서 숨기고 싶은 설정들을 캡슐화 할 수 있다. 또한 테스트환경과 운영환경을 나누어 설정을 할 수 있어 배포 시 귀찮음을 덜 수 있다.