SW-PRODUCT/개발

spring-boot에서 profile 관리

굴돌 2015. 11. 11. 14:16



maven에서 profile 관리는 빌드할때의 profile 관리이다.


war 파일을 만들어서 배포하는 환경이라고 하면,

maven에서 profile 관리하게 되면 production를 위한 war와 alpha를 위한 war가 따로 생성이 된다.


이와달리, spring-boot의 profile 기능을 활용하게 될 경우, 동일한 war 파일도 시작할때의 환경에 따라 production 혹은 alpha로 동작하게 된다.


아무튼 그런 이유로 spring-boot에서의 profile 지정방법을 살펴보자면...

(이게 spring과 동일한지는 잘 모르겠다...아마 spring의 profile과 같을것 같은데..미묘하게 다를 수도 있고...)


기본적으로 spring-boot는 application.properties 파일을 읽어들인다.

그리고 이 파일에 지정하는 속성들은 실행시점에 argument로 지정 가능하다.


spring-boot 어플에 argument로 던져서 main()에서 처리하는 방법

java -jar myapp.jar --spring.profiles.active=alpha,enableBatch


일반적인 -D 옵션으로 주는 방법

java -Dspring.profiles.active=alpha,enableBatch -jar myapp.jar


혹시 maven을 실행해서 spring-boot 플러그인 써야 한다면

mvn spring-boot:run -Drun.arguments="--spring.profiles.active=alpha,--spring.profiles.active=enableBatch"


linux에서 사용가능한 방법으로써 환경변수 활용하는 방법은

SPRING_PROFILES_ACTIVE=alpha,enableBatch java -jar target/con-batch.jar



사실 mvn의 spring-boot 플러그인을 쓸때는 차라리 linux 환경설정 방식을 쓰는게 좋다. spring-boot 플러그인의 파라메터 처리가 구려서...

SPRING_PROFILES_ACTIVE=alpha,enableBatch mvn spring-boot:run


등이 있다.


참고로, spring-boot의 경우 환경변수에 대_문_자 형태로 되어 있는 것들을 소.문.자 형태로 바꿔서 자기에게 맞는 환경변수가 있으면 갖다 쓴다.


즉, SPRING_PROFILES_ACTIVE는 spring-boot가 spring.profiles.active로 바꾼 후에 자기가 쓸 수 있는건지 검사해서 쓸 수 있으면 가져다 쓰게 되는 것이다.

http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html

http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

http://altfatterz.blogspot.kr/2014/10/software-configuration-with-spring-boot.html


"환경변수, Environment Variables"와 "시스템변수 System Properties"가 햇갈리긴 하는데,

환경변수: https://docs.oracle.com/javase/tutorial/essential/environment/env.html

시스템변수: https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html



'SW-PRODUCT > 개발' 카테고리의 다른 글

Twitter에서 Storm을 Heron으로 교체?  (0) 2015.11.12
git github tips  (0) 2015.11.11
Mockito  (0) 2015.11.10
[도서] 서버/인프라 실전 구축 가이드  (0) 2015.10.31
spring boot 4.2에서 CROS 지원이 추가됐다.  (0) 2015.10.31