yml 파일에서 profile을 설정해주는 방식을 변경해주었습니다.
설정 방식을 변경한 이유는 다음과 같습니다.
1. 기존에 사용하던 profile 설정 방식은 deprecated되어 있다
2. Test를 작성하기 시작하면서 별도의 profile을 지정해줘야 하는 일이 생겼다.
저번 개인 프로젝트에서는 허겁지겁 프로젝트를 진행하다보니, deprecated 되었어도 그냥 사용했었습니다. 하지만 이번 프로젝트에서 각 테스트 별로 profile을 지정해줘야 하는 일이 생겼고, 이참에 deprecate된 방식말고 새로운 방식을 적용해보고자 하였습니다.
어떠한 프로필을 사용할지 정리해 놓은 application.yml 파일이 있습니다.
spring:
profiles:
active: # 어떠한 프로필 그룹을 활성화시킬지 결정해줍니다
- local
group: # 필요한 설정들을 그룹화해주고 있습니다(여기서는 DB 설정만 적용하였습니다)
local:
- db-local #db-local 프로필
prod:
- db-aws #db-aws 프로필
docker-local:
- db-docker-local #db-docker-local 프로필
include: # application-db.yml 파일을 참고하도록 설정해줍니다
- db
mvc:
pathmatch:
matching-strategy: ant_path_matcher
server:
port: 8080
db 설정에 따라 프로필을 분리해놓은 yml 파일입니다.
#defaul 설정 - 공통 설정입니다
spring:
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
show_sql: true
format_sql: true
dialect: org.hibernate.dialect.MariaDBDialect
logging.level:
org.hibernate.sql: debug
--- #dev 설정(개발 환경) : db-docker-local 프로필을 설정해줍니다
spring:
config:
activate:
on-profile: "db-docker-local"
datasource:
url: jdbc:mariadb://주소
username: username
password: password
driver-class-name: org.mariadb.jdbc.Driver
--- # production 설정(실제 운영 환경) : db-aws 프로필을 설정해줍니다
spring:
config:
activate:
on-profile: "db-aws"
datasource:
url: jdbc:mariadb://주소
username: username
password: password
driver-class-name: org.mariadb.jdbc.Driver
--- #dev 설정(개발 환경) : db-local 프로필을 설정해줍니다
spring:
config:
activate:
on-profile: "db-local"
datasource:
url: jdbc:mariadb://주소
username: username
password: password
driver-class-name: org.mariadb.jdbc.Driver
아직 개발 중인 프로젝트라 yml 파일 설정이 많지는 않습니다..!
어플리케이션이 기본적으로 사용하는 application.yml 파일입니다
기본적으로 실행 시 mariaDB를 사용하도록 되어있습니다.
spring:
thymeleaf:
check-template-location: true
prefix: classpath:/templates/
suffix: .html
cache: false
jpa:
show-sql: true
hibernate:
ddl-auto: create
datasource:
url: jdbc:mariadb://주소
username: username
password: password
driver-class-name: org.mariadb.jdbc.Driver
server:
port: 8081
---
spring:
config.activate.on-profile: test # test환경에서 사용되는 yml 파일
test 프로필을 설정해놓은 yml파일입니다
기본 application.yml과 다르게 mariaDB 대신 h2를 사용하도록 설정해놓았습니다
spring:
datasource:
url: jdbc:h2:tcp://localhost/~/test
driver-class-name: org.h2.Driver
username: sa
h2:
console:
enabled: true
기본적으로는 application.yml의 설정을 적용하되, test 프로필을 사용하면 test 프로필에서 재정의된 값들을 사용한다는 점입니다.
다음과 같이 test profile을 활성화해줄 수 있습니다!
@SpringBootTest
@Transactional
@ActiveProfiles("test")
class PostTest {...}
좀 더 자세한 내용은 밑에서 확인하실 수 있습니다!
https://stackoverflow.com/questions/38711871/load-different-application-yml-in-springboot-test/53134737#53134737