언어와 프레임워크/Spring
[Spring] Profile을 통해 다양한 application.yml 설정 운용하기
Unagi_zoso
2022. 9. 30. 11:20
개요 |
서비스를 만들다보면 local, develop, product 등 서비스가 실행되는 환경이 다양할 수 있습니다.
저같은 경우에는 서비스를 구축하며 develop 환경에서 사용될 MariaDB와 test 환경에서 사용될 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의 환경변수로 넣어준다던가.. )
긴 글 읽어주셔서 감사합니다.
부족한 점이 있다면 부디 알려주시면 감사하겠습니다.