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번 포트로 구동하도록 설정해봅니다.
1 | server: |
그 다음,
application-dev.yml에는 아래와 같이 8080번 포트로 구동하도록 설정해봅니다.
1 | server: |
주의 사항으로, yml파일은 depth가 증가할 때마다 띄어쓰기 두번을 입력해줘야 합니다.
(탭 안됨)
그리고 값을 입력할 때에는 : 뒤에 한칸을 띄어서 써주도록 합니다.
몇몇 버전에서는 yml대신 properties라는 확장자를 사용하는데,
(application.properties)
이럴 때에는 아래와 같이 depth 없이 .으로 계층을 표현합니다.
1 | server.port:8080 |
2. spring profile 사용하기 : profile불러오기
앞서 설정한 profile을 사용해보겠습니다.
springboot를 시작할때, 아래와 같이 -Dspring.profiles.active를 추가로 써주면 됩니다.
1 | 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
내용이 너무 많으나, 제가 사용하고 있는 설정값을 주석(##)과 함께 일부 공유드립니다.
1 | server: |