[Spring Boot] application.yml 프로파일 설정과 외부 컨피그 관리

AIR·2024년 12월 8일

스프링 부트 프로젝트를 생성하면 디폴트로 생성되는 application.properties 대신에 최근에는 가독성이 좋은 YAML 파일인 application.yml을 많이 사용한다. (application.propertiesapplication.yml이 둘다 존재하면 yml 파일이 적용된다.)

profile에 따른 환경 구성 분리

application.yml에 profile 설정

spring:
  config:
    activate:
      on-profile: local
my.custom.value: "local"
---
spring:
  config:
    activate:
      on-profile: dev
my.custom.value: "dev"

테스트를 위해 각 profile의 my.custom.value 값을 주입받아 /profile-test에 profile만 local과 dev로 구분하여 요청해본다.

@RestController
public class TestController {

    private static final Logger log = LoggerFactory.getLogger(TestController.class);
    @Value("${my.custom.value}")
    private String profile;

    @GetMapping("/profile-test")
    public String profileTest() {
        log.info("profile: {}", profile);
        return "ok";
    }
}
//local
2024-12-08 22:05:33.785 [http-nio-8080-exec-2] [INFO] c.s.c.TestController - profile: local 
//dev
2024-12-08 22:10:01.204 [http-nio-8080-exec-2] [INFO] c.s.c.TestController - profile: dev 

applicaton-{profile}.yml 파일 생성

applicaton-{profile}.yml으로 profile마다 따로 설정 파일을 생성하면 별도의 작업없이도 애플리케이션을 실행할 때 -Dspring.profiles.active={profile}을 입력하면 해당하는 applicaton-{profile}.yml이 적용된다. 이때 우선적으로 application.yml이 적용되고 application-{profile}.yml이 덮혀쓰여진다.

외부 컨피그 임포트

다음과 이미지에서 처럼 기존의 application.yml이 존재하는 /resources 경로가 아닌 /resources/test와 같이 다른 경로에 존재하는 컨피그 파일을 사용할 수 도 있다.

외부 컨피그 파일을 임포트하기 위해서는 application.yml에 다음과 같이 작성한다.

spring:
  config:
    import:
      - classpath:/test/app-config.yml
profile
백엔드

0개의 댓글