언어와 프레임워크/Spring

[Spring] Profile을 통해 다양한 application.yml 설정 운용하기

Unagi_zoso 2022. 9. 30. 11:20

 

 

  개요

 

 

서비스를 만들다보면 local, develop, product 등 서비스가 실행되는 환경이 다양할 수 있습니다.

 

저같은 경우에는 서비스를 구축하며 develop 환경에서 사용될 MariaDBtest 환경에서 사용될 H2DB를 

따로 설정하기 위해 Profile을 이용했습니다.

 

 

 

 

  예시

 

 

 

// application.yml

spring:
  profiles:
    active: local

application.yml에서는 사용할 profile을 정해줍니다. 이 때 active에 들어갈 값

위 사진을 예로 application-.yml의 값입니다.

 

application-dev를 사용하려면 dev

application-local을 사용하려면 local을 적어주시면 됩니다.

 

// application-dev.yml

spring:
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb: 생략
    username: 생략
    password: 생략

 

// application-local.yml

spring:
  datasource:
    hikari:
      jdbc-url: jdbc:h2:mem:testdb;MODE=MariaDB;
      username: sa
      password:
      driverClassName: org.h2.Driver

 

다음과 같이 각 설정파일에 따로 설정을 하면 됩니다.

 

 

 

 

 

  테스트 

 

 

 

제대로 profile이 설정되었는지를 확인하는 테스트 코드입니다.

SpringFramework core api의 

Environment 클래스의 getAcitiveProfiles를 통해 적용되는 프로필들을 String[]으로 반환받습니다.

 

@Autowired
private Environment environment;

@DisplayName("1. env로 profile 제대로 가져오는지 테스트")
@Test
void test_1(){
    assertEquals("local", environment.getActiveProfiles()[0]);
}

 

 

 

 

  정리

 

 

application.yml의 설정을 여러 개 둬서 한 프로젝트에서 다양한 환경을 구성할 수 있습니다.

프로젝트에 어떤 profile을 설정할 지는 다양한 방법이 있습니다. (JVM의 환경변수로 넣어준다던가.. )

 

 

 

 

 

 

긴 글 읽어주셔서 감사합니다. 

부족한 점이 있다면 부디 알려주시면 감사하겠습니다.