Framework & Library/Spring

Springboot 3 개발 환경 분리하기(with H2DB, MYSQL, Intellij)

ruu++ 2024. 4. 23. 18:34

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

Spring에서 개발 환경 분리하기 위한 Profile

spring profile
spring profile

  • local과 lcal-dev로 나눠 설명하려고 합니다.
  • local에 h2 인메모리 db를 사용해서 기능을 최대한 빠르게 만들고 테스트하기 위해서 사용합니다.
  • local-dev는 실제로 로컬환경에서 mysql을 연동해서 mysql 관련 오류가 존재하는지 확인하는 개발 환경입니다!.

profile 사용법 with Spring

  1. 설정 파일 두개를 생성해야 합니다.
    • Resoruce 폴더에 application-local 파일과 applcation-local-dev 파일을 생성합니다.
    • 기본 동작 방식 이후 스프링 3에서 설정하는 방식을 다룹니다.
  2. 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
  1. 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}
  1. 실행 환경
  • 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 기능을 사용하면 여러 개발 환경을 쉽게 실행할 수 있습니다.

개발환경구축1

무료버전

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

개발환경2

유료버전

  • Active profiles에 profile을 설정하면 됩니다.

개발환경3

참고자료

https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config.files

원하신다면 더 추가해서 더 많은 개발환경을 구축하여 사용할 수 있습니다!.
긴 글 읽어주셔서 감사합니다
다음글 : 스프링 부트 H2 콘솔 로컬 환경 만들기