Spring 심화 (Profile별 설정)

KimGwangmin·2026년 9월 28일

Profile별 설정의 이유

Profile = 환경

환경별 차이 예시

항목LocalProd
DB 호스트localhostrds.amazonaws.com
DB 포트33063306
DB 이름myapp_localmyapp_prod
DB 비밀번호localpass(보안 비밀번호)
로그 레벨DEBUGINFO

잘못된 방식

  • 환경 변수 하드코딩
# application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/test # 고정 되어버림!
spring.datasource.password=12345678                    # 고정 되어버림!
  • 운영 배포 시 코드를 수정해야 함
  • 비밀번호가 코드에 노출
  • 환경마다 다른 JAR 빌드 필요

올바른 방식

  • 환경별 설정 분리
application.properties        → 공통 설정
application-local.properties  → 로컬 설정
application-prod.properties   → 운영 설정 (비밀번호는 환경변수)
  • 코드 수정 없이 환경 변경
  • 비밀번호는 환경변수로 분리
  • 하나의 JAR로 모든 환경 대응 가능

Spring Boot에서

application-{profile}.properties 파일명 패턴으로 설정 구분

  • local
  • dev
  • qa
  • staging (stg)
  • prod
  • ...

application.properties은 모든 환경에 적용되는 공통 설정 파일

  • 충돌하는 경우 세부 프로필 환경 설정이 우선시됨

IntelliJ에서 실행 프로필 설정하는 방법

여러 가지 환경 변수 설정하는 방법

순위방법예시
1 (높음)프로그램 인자--spring.profiles.active=prod
2환경변수SPRING_PROFILES_ACTIVE=prod
3JVM 옵션-Dspring.profiles.active=prod
4 (낮음)application.ymlspring.profiles.active: local

실습

application.properties(공통 환경)

spring.application.name=camp-health-app
spring.profiles.active=local

server.port=8080

management.endpoints.web.exposure.include=health,info

application-local.properties(로컬 환경)

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456

management.endpoint.health.show-details=always

application-prod.properties(운영 환경)

spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}

management.endpoint.health.show-details=never  # 운영에서는 숨김

운영(prod)에서는 민감 정보를 환경 변수로 외부에서 주입해야 한다.

0개의 댓글