spring profile이란
스프링 프로파일(Spring Profile)은 스프링 프레임워크에서 애플리케이션의 환경 설정을 구분하기 위한 기능입니다.
프로파일은 애플리케이션을 실행할 때 선택할 수 있습니다.
예를 들어, 개발 환경에서는 "dev" 프로파일을 선택하고,
운영 환경에서는 "prod" 프로파일을 선택할 수 있습니다.
예를 들어, 동일한 로직을 수행하는 스프링 app을 운영/개발 환경에 각각 배포하여,
각각 운영/개발 db에 접속하고자 하는 경우, 아래와 같은 구조로 deploy 할 수 있습니다.
1. spring profile 사용하기 : profile만들기
spring profile을 사용하기 위해서는 src/main/resources에 application-xxx.yml파일을 만들어 주면됩니다.
xxx는 profile에 대한 이름입니다.
만일 -xxx를 안 붙인 application.yml을 만들면,
이 설정파일에 적힌 설정값이 default로 설정됩니다.
만일 운영/개발환경을 분리하고자 할 경우, 보통
application-prd.yml (운영환경)과
application-dev.yml (개발환경) 으로 명명하여 각각 파일을 만듭니다.
profile 파일을 만든 후, 파일구조를 보면 아래와 같습니다.
설정값의 예시로, prod와 dev에서 각각 구동되는 포트를 변경하도록 해보겠습니다.
먼저, application-prd.yml에 아래와 같이 8090번 포트로 구동하도록 설정해봅니다.
server:
port: 8090
그 다음,
application-dev.yml에는 아래와 같이 8080번 포트로 구동하도록 설정해봅니다.
server:
port: 8080
주의 사항으로, yml파일은 depth가 증가할 때마다 띄어쓰기 두번을 입력해줘야 합니다.
(탭 안됨)
그리고 값을 입력할 때에는 : 뒤에 한칸을 띄어서 써주도록 합니다.
몇몇 버전에서는 yml대신 properties라는 확장자를 사용하는데,
(application.properties)
이럴 때에는 아래와 같이 depth 없이 .으로 계층을 표현합니다.
server.port:8080
2. spring profile 사용하기 : profile불러오기
앞서 설정한 profile을 사용해보겠습니다.
springboot를 시작할때, 아래와 같이 -Dspring.profiles.active를 추가로 써주면 됩니다.
java -jar app.jar -Dspring.profiles.active=dev
만일, eclipse를 쓰신다면 아래와 같이 프로젝트 우클릭 > run configuration > arguments의
VM arguments에 -Dspring.profiles.active=dev 를 써준 후,
apply 및 RUN을 해주시면 됩니다.
spring.profiles.active=prd 옵션을 넣을 때에는 8090번포트로 접속이 되고,
spring.profiles.active=dev 옵션을 넣어 실행할 때에는 8080번포트로 접속이 되는것을 확인할 수 있습니다.
기타 설정 값
server.port 뿐만이 아니라, 여러 설정값을 입력할 수도 있습니다.
개발자가 설정값을 만들수도 있기도 한데, 이 부분은 나중에 기회가 되면 다뤄보도록 하겠습니다.
기본적으로 설정할 수 있는 설정값들은 아래 페이지를 참고하시면 확인할 수 있습니다.
https://docs.spring.io/spring-boot/appendix/application-properties/index.html
내용이 너무 많으나, 제가 사용하고 있는 설정값을 주석(##)과 함께 일부 공유드립니다.
server:
port: 80 ## 서버 구동하는 포트
error:
include-stacktrace: never # 에러페이지에서 stacktrace출력
include-exception: false #응답에 exception 표시여부
whitelabel:
enabled: false # WhiteLable Error Page 표시여부
spring:
application:
name: application-test #application 이름
codec:
max-in-memory-size: -1 # 입력 스트림 버퍼할 수 있는 바이트 수. 이 설정은 자동 구성된 WebFlux 서버 및 WebClient 인스턴스에만 적용됨. 용됩니다. 대부분의 코덱은 기본적으로 256K로 제한
web:
resources:
add-mappings: false # 핸들러가 없을 경우, resource경로로 판단
autoconfigure:
exclude: # autoconfigure 제외할 항목들
- 'org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration'
- 'org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration'
'자바,스프링 - Java,Spring Framework' 카테고리의 다른 글
maven dependency scope, provided, system, import, runtime, test (0) | 2024.11.12 |
---|---|
maven local jar 추가 import , Maven Repository 없이 로컬 jar 파일을 maven project 에 추가하기, pom.xml 로컬 jar 파일 import하기 (0) | 2024.11.11 |
java jni란?, jni 사용하기, windows에서 jni사용하기, 윈도jni (5) | 2024.11.10 |
Java프로젝트에 lo4j2 적용하기 (1) | 2024.11.09 |
java프로젝트에 log4j2를 도입해야하는 이유. (1) | 2024.11.08 |
댓글