Spring

application.yml 여러개로 나누기

ZzangHo 2022. 12. 14. 16:06
728x90

프로젝트를 만들다 보면 보통 아래와 같이 loc, dev, stag, prod 형태로 application.yml 또는 application.properties를 나눌 것 입니다.

spring:
  main:
    web-application-type: none
  profiles:
    active: local
  batch:
    job:
      names: ${job.name:NONE}


--- ## loc 환경 설정
spring:
  config:
    activate:
      on-profile: loc

--- ## dev 환경 설정
spring:
  config:
    activate:
      on-profile: dev

--- ## stag 환경 설정
spring:
  config:
    activate:
      on-profile: stag

--- ## prod 환경 설정
spring:
  config:
    activate:
      on-profile: prod

오늘은 멀티 모듈로 프로젝트를 구성한 후 각 모듈에 application.yml 을 어떻게 세분화 하여 나눌 수 있는지 정리해보고자 합니다.

 

보통 멀티 모듈 프로젝트를 생성하면 아래와 같은 구조를 가지게 됩니다.

  • Batch
  • API
  • Core

위와 같은 구조 말고도 각각 필요한 모듈을 더 추가해서 사용할 수도 있습니다. 

위의 구조를 보면 크게 Batch, API 어플리케이션이 있고 Core라는 Domain의 특성을 가진 모듈이 있습니다.

 

  • Batch
    • application.yml
  • API
    • application.yml
  • Core
    • application.yml

 

각각의 모듈에 application.yml 을 작성하게 될 텐데 이때 공통으로 사용 되는 Core 모듈에서 application.yml 이라는 네이밍으로 작업 시 해당 application.yml은 읽혀지지 않게 된다. 이미 Batch 혹은 API에 동일 이름의 yml이 존재하기 때문이다. 

 

그렇다면 어떻게 해야 할까?

 

나의 경우 아래와 같이 세분화를 하고 있다.

 

 

application.yml 세분화

 

위와 같이 각 application-{시스템}.yml 을 만들고 공통으로 사용하는 부분은 Core 각 어플리케이션에서 개별적으로 사용하는 부분은 개별적으로 셋팅한다.

그리고 아래와 같이 application.yml에 처리를 해주면 된다.

spring:
  profiles:
    active: local
    include:
      - mysql
      - mongo
      - elastic

 

아래 로그를 보면 include를 통해 application-{시스템}.yml 들이 기동 시 Load가 된다.

 

[2022-12-14 15:15:39.225] [INFO ] [main] [Starting TicketBatchApplication using Java 11.0.16.1 on 2020051ui-MacBookPro.local with PID 49174 (/Users/a2020051/Desktop/workspace/ticket/ella-ticket-search-indexer/ticket-app-batch/build/classes/java/main started by xxx in /Users/xxx/Desktop/workspace/ticket/ella-ticket-search-indexer)] [com.interpark.TicketBatchApplication.logStarting]
[2022-12-14 15:15:39.227] [INFO ] [main] [The following profiles are active: mysql,mongo,elastic,local
[com.interpark.TicketBatchApplication.logStartupProfileInfo]

 

 

'Spring' 카테고리의 다른 글

stream API와 for-loop 성능차이  (0) 2022.02.07
SpringBatch 전용 DB 테이블  (0) 2022.02.07
SpringBatch  (0) 2022.02.07
application.yml로 환경 나누기  (0) 2022.01.28