스프링의 개발 환경을 분리하면, 가장 대표적으로 DB에 쓸모없는 테스트용 데이터의 생성을 막을 수 있으며, 운영 서버와 별도로 독립적으로 스프링 App을 실행 가능합니다. 그것을 위해서 스프링은 profile 기능을 제공합니다.
Spring에서 개발 환경 분리하기 위한 Profile

- local과 lcal-dev로 나눠 설명하려고 합니다.
- local에 h2 인메모리 db를 사용해서 기능을 최대한 빠르게 만들고 테스트하기 위해서 사용합니다.
- local-dev는 실제로 로컬환경에서 mysql을 연동해서 mysql 관련 오류가 존재하는지 확인하는 개발 환경입니다!.
profile 사용법 with Spring
- 설정 파일 두개를 생성해야 합니다.
- Resoruce 폴더에 application-local 파일과 applcation-local-dev 파일을 생성합니다.
- 기본 동작 방식 이후 스프링 3에서 설정하는 방식을 다룹니다.
- application-local.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:core;MODE=MySQL;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.username=sa
- application-local-dev.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/${database.name}?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=${database.username}
spring.datasource.password=${database.password}
- 실행 환경
- build/lib 폴더에 있는 jar 파일을 java -jar {jar파일명} 으로 실행해야 합니다!.
# 커맨드 라인 명령
java -jar ./build/libs/developer-korea-0.0.1-SNAPSHOT.jar --spring.profiles.active=local
# JVM 옵션 명령어
java -jar -Dspring.profiles.active=local ./build/libs/developer-korea-0.0.1-SNAPSHOT.jar
Springboot 개발 환경 설정
application yml
---와spring.config.activate.on-profile을 사용하여 하나의 파일에서 여러 개발 환경 설정이 가능합니다.- spring.config.import 사용해서 외부 환경 설정을 가져올 수 있습니다.
spring:
jpa:
properties:
hibernate.hibernate.default_batch_fetch_size: 100
open-in-view: false
hibernate:
ddl-auto: none
---
spring.config.activate.on-profile: local
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:core;MODE=MySQL;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
username: sa
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true
show-sql: true
h2:
console:
enabled: true
---
spring.config.import: classpath:application-db.properties
spring.config.activate.on-profile: local-dev
spring:
datasource:
hikari:
connection-timeout: 5000
maximum-pool-size: 5
keepalive-time: 30000
validation-timeout: 1000
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/${database.name}?serverTimezone=UTC&characterEncoding=UTF-8
username: ${database.username}
password: ${database.password}
jpa:
properties:
hibernate:
show_sql: true
format_sql: true
Intellij에서 스프링 개발 환경 설정하기
run/debug configurations 기능을 사용하면 여러 개발 환경을 쉽게 실행할 수 있습니다.

무료버전
- 무료버전은 해당 창이 화면에 동작하면
Alt + V 키를 눌러 나오게 되는 칸에 JVM 옵션 명령어을 추가합니다. - -Dspring.profiles.active={active-profile-name}

유료버전
- Active profiles에 profile을 설정하면 됩니다.

참고자료
원하신다면 더 추가해서 더 많은 개발환경을 구축하여 사용할 수 있습니다!.
긴 글 읽어주셔서 감사합니다
다음글 : 스프링 부트 H2 콘솔 로컬 환경 만들기
'Framework & Library > Spring' 카테고리의 다른 글
| Spring boot) Discord webhook logback으로 로깅 자동화하기. (0) | 2024.05.30 |
|---|---|
| Spring boot 3. H2 DB와 CONSOLE 환경 설정하기 (0) | 2024.04.24 |
| spring boot 3.x.x swagger 설정 및 file upload 문제 해결 (0) | 2024.04.17 |