오늘의 포스팅은 환경별로 세팅을 해주기 위한 작업을 포스팅 하기위해서 작성을 하였다.
일단 여러가지 환경으로 설정이 가능이하다. 그런데 어떤 상황에서 설정을 다르게 해줄까?
헌업에서는local
dev
stage
prod
이렇게 4개를 주로 구성을 한다.
로컬환경, 개발환경, 스테이징 환경, 운영환경 이렇게 4가지이다.
기본적으로 서버의 환경이 천차만별이다. 당연하게도 운영기를 제외한 3가지는 모두 좋지 못한것을 사용하는 것이 일반적이고 db 서버도 따로 구성이 된다.
그렇기 때문에 이런 상황에서 어떻게Spring
에서 구성을 하는지 알아보자
일단 첫 인텔리제이나 spring boot 를 시작을하면 propties ? 로 파일이 되어있다.
필자의 경우yml
로 설정을 해주었다. 특별한 이유가 있는 것은 아니다.
원래는 기본세팅으로 하였지만yml
이 좀더 편한 거나 그런 것은 아니기 때문에
편한것을 사용을 하면된다. 하지만 이번 포스팅의 경우에서는 yml 로 기준을 잡고 작성을 하였다.
spring:
application:
name: JPA-APP
profiles:
active:
group:
dev:
- pg
- h2
jpa:
show-sql: true
hibernate:
ddl-auto: 'create-drop'
properties:
hibernate.format_sql: true
hibernate.jdbc.lob.non_contextual_creation: true
logging:
level:
org:
hibernate.type.descriptor.sql.BasicBinder: TRACE
필자가 사용하는 기본 yml 이다.
여기서 중요한 것은 spring.application.profiles.group.dev 이다
이 부분이 있는 것과 없는 것은 차이가 크다.
⚠️ 이 부분이 없으면 아래와 같이 에러가 발생이 된다.
아래의 디렉토리 구조를 보면
- 공통: application.yml
- h2: application-h2.yml
- pg: application-pg.yml
공통의 경우 공통적으로 들어가는 부분을 작성을 해주고
나머지 부분은 필자의 경우 데이터베이스 별로 분기를 주었다.
application-프로파일명 규칙을 갔는다.
이것을 이제 JVM Option 에 추가를 해주면 사용이 가능하다.
-Dspring.profiles.active=h2