[spring] profile로 서버 환경에 맞는 Context 적용(Dspring.profiles.active)

2023. 3. 21. 14:26개발 공부/자바

아직 신입이라 현업에 종사하면서도 파악하기 바쁜 요즘

tomcat에서 -Dspring.profiles.active을 설정하는것을 보았다.

왜 설정하는지 모르고 사용하였는데 궁금해서 정리할겸 끄적여본다.

 

프로젝트 마우스 우클릭 -> run as -> run configuratins -> Arguments -> VM arguments에 -Dspring.profiles.active 설정한다.

 

왜 설정하는지 검색해보니

WAS를 복수이상으로 사용할때 같은 Spring을 사용하지만 각 서버에 맞게 Context를 설정해야 하는 경우에 사용한다고 한다.

 

예로들어서 main과 devel(개발용) 으로 서버를 분리해서 관리할때 활용할수 있는것이 Spring.Profile이다.

 

프로젝트 마우스 우클릭 -> run as -> run configuratins -> Arguments -> VM arguments 해당 경로에

main 서버 : -Dspring.profiles.active=main

devel 서버 : -Dspring.profiles.active=devel

환경에 맞게 추가해주면 되는 것 이다. 

 

설정을 해줬으면 java 안에서 @Configuration이나 @Bean 관련 Annotaion에서 @Profile을 통해 활영하거나 

context xml 에서 활용이 가능하다.

<beans profile="local">
  <bean id="datasource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="url" value="jdbc:mysql://3.33.33.33:3306/gillog">
  </bean>
  <bean id="token">
    <property name="jwt" value="abcdefghgillog11">
  </bean>
</beans>
    
    
<beans profile="devel">
  <bean id="datasource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="url" value="jdbc:mysql://4.44.44.44:3306/gillog">
  </bean>
  <bean id="token">
    <property name="jwt" value="gillogggolillog124">
  </bean>
</beans>

이를 통해 spring.profile.active=main로 지정한 Tomcat Server와, spring.profile.active=devel  등으로 지정한

Tomcat Server에서 각각 다른 Bean 으로 같은 Spring Application을 구동 할 수 있다.