티스토리 뷰

728x90

🔎 상황

- 하나의 property로 설정값들을 관리하니, 매번 주석처리를 하는게 불편하고, 갯수가 많아지다보니 실수가 잦아졌다.

맨 처음에는 로컬,개발,운영 이렇게 세가지로만 나누어져있었는데, 점점 고객사별로 개발, 운영이 추가되고..관리가 힘들어졌다. 따라서 properties를 분리 할 필요성이 생겼다.

1. properties 분리하기

기본 globals.properties에는 active 만 놓고,

local용 aws-dev용으로 별도 파일을 생성하여 DB정보 API연동 정보 등을 작성했다.

*active에는 빌드시 사용할 properties의 이름을 작성한다.

2. 설정파일 변경

2.1 properties 파일 변수로 등록하기.

util은 properties를 변수로 사용할 수 있게끔 등록을 해준다. 등록 후 #{id[key값]}을 이용해서 사용 할 수 있다.

(util의 의미를 잘 몰라서 좀 헤맸었다.😥)

따라서 어디에서 선언을 하든 상관이 없는데, xml 파일이 읽어지는 순서에 유의해서 변수로 사용기전에 작성을 해줘야한다.

//global의 이름으로 globals.properties를 등록
//다른 xml이나 java 내에서 global이라는 이름으로 globals.properties 내의 값들을 사용 할 수 있다.
<util:properties id="global" location="classpath:/egovframework/egovProps/globals.properties"/>

//globals.properties 내의 'active'값을 읽어와 properties를 prop라는 이름으로 등록한다.
<util:properties id="prop" location="classpath:/egovframework/egovProps/globals-#{global['active']}.properties"/>
//만약 globals.properties 내의 active 값이 local이라면 위의 location은 아래와 같다.
//location="classpath:/위치/globals-local.properties"

✨만약, 아래와 같이 PropertyPlaceholderConfigurer가 있으면 location도 함께 변경해주어야 한다.

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
   <property name="locations" value="classpath:/egovframework/egovProps/globals-#{global['active']}.properties"/>
 </bean>

나는 아래와 같이 context 관련 된 것도 있어서 변경을 해주었다.

  <context:property-placeholder location="classpath:/egovframework/egovProps/globals-#{global['active']}.properties" />
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함