로컬, 테스트, 운영서버 등 배포 환경에따라 설정 값이 모두 다르다. 스프링의 프로파일은 이러한 설정을 배포 환경에 따라 적용시킬 수 있도록 도와준다.
프로파일을 설정하는 것은 간단하다. 스프링을 설정하기 위한 yaml 파일을 만들 때 이름을 application-${프로파일}.yaml 로 지으면 해당 변수 자리에 위치하는 변수가 프로파일이 된다.
총 test, local, prod 로 나누어 보았다. dev 상의 후 결정
application.yml
spring:
profiles:
active: local
group:
local: local, common
prod: prod, common
- 스프링에서는 그룹으로 프로파일을 설정하는 것도 지원한다.
- 공통으로 사용하는 설정들은 common 프로파일로 두었다.
application-common.yml
spring:
application:
name: hoon
jpa:
open-in-view: false
properties:
hibernate:
default_batch_fetch_size: 500
format_sql: true
- open-in-view 를 끄거나 배치사이즈와 같이 공통으로 사용하는 설정들을 두었다.
- 아직 프로젝트 시작 전이기 때문에 이것밖에 없지만 공통으로 사용되는 시큐리티 관련된 설정들이나 다른 설정들이 더 추가되면 좋을 것 같다.
application-local.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: url
username: username
password: password
jpa:
database: mysql
hibernate:
ddl-auto: create-drop
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL8Dialect
flyway:
enabled: false
server:
port: 8080
cors:
allowed:
api: /api/**
url:
- http://localhost:3000 # 리액트 주소
method:
- GET
- POST
- PATCH
- DELETE
- 로컬 환경에서 개발을 하기위해 필요한 설정들이다.
application-prod.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: url
username: username
password: password
jpa:
database: mysql
hibernate:
ddl-auto: none
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL8Dialect
flyway:
enabled: true
baseline-on-migrate: true
cors:
allowed:
api: /api/**
url:
- url
method:
- GET
- POST
- PATCH
- DELETE
- 실제 운영 환경에서 사용하기 위한 프로파일이다.
- 실제 운영 환경에서는 ddl-auto 옵션이 설정되어 있다면 큰일날 수 있기 때문에 none 으로 설정해두었다.
application.yml
spring:
profiles:
active: test
include: common
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:test
username: sa
password:
h2:
console:
enabled: true
jpa:
database: h2
hibernate:
ddl-auto: create-drop
properties:
hibernate:
dialect: org.hibernate.dialect.H2Dialect
flyway:
enabled: false
- test 디렉터리 하위의 resources 디렉터리에 추가하였다.
- common 프로파일에서 사용되는 공통된 기능을 사용하기 위해 include 를 해주었다.
- 테스트 환경에서는 mysql 이 아닌 h2 를 사용하여 테스트를 진행한다.