properties, 배치 설정 파일들 어떻게 배포/관리하고 계신가요?

2,035 views
Skip to first unread message

namkyu Lee

unread,
Apr 8, 2012, 8:29:28 AM4/8/12
to ks...@googlegroups.com
저희가 현재 하는 방식은 이렇습니다.

properties 파일은 로컬, 개발, 상용1, 상용2 이렇게 4개를 만들어서 관리를 하고 있고, 배치 파일은 상용1, 상용2 배치 실행 시간이 다른 상황인지라 해당 배치 xml 파일 적용 후 각 장비에 telnet으로 접근하여 vi로 시간을 수정하고 있습니다.

설정 파일을 수작업을 통해서 변경한다는게 아무래도 위험 부담을 안고 있는 것 같아서 고민이네요.

혹 여러 분들은 로컬, 개발, 상용 장비에 맞는 설정 파일들을 어떻게 관리하고 계시나요?

노하우를 전수해 주세요. ^^

wansu yang

unread,
Apr 8, 2012, 8:42:13 AM4/8/12
to ks...@googlegroups.com

maven 을 사용하는 프로젝트라면 profile 을 이용한 설정관리가 가능합니다.  ant 를 사용할때도 비슷하게 사용자 프로퍼티 입력을받아 포함할 리소스위치를 지정하게합니다.

2012. 4. 8. 오후 9:29에 "namkyu Lee" <lng...@gmail.com>님이 작성:
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
웹에서 이 토론을 보려면 https://groups.google.com/d/msg/ksug/-/LXhi0gl-85UJ을(를) 방문하세요.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.

코바(이수홍)

unread,
Apr 8, 2012, 10:33:35 AM4/8/12
to Korea Spring User Group
혹시 스프링 버전 3.1을 사용 하신다면

profile을 활용해보시면 정말 좋을 것 같습니다.

서버 시작시 파라메터로 구분 하는 방법과
-Dspring.profiles.active=dev

아님 web.xml안에
<context-param>
<param-name>spring.profiles.default</param-name>
<param-value>dev</param-value> <!-- 프로파일 구분하는 부분 -->
</context-param>

이렇게 파라메터를 정해 개발 또는 서버 등 구분 할 수 있습니다.

config.xml 부분에서는
<beans profile="dev">
<!--개발용 bean -->
</beans>
<beans profile="server">
<!-- 운영용 bean-->
</beans>
이렇게 구분하여 프로파일별 로딩 할 수 있는 빈을 구분 할 수 있습니다.

이곳에서 프로퍼티파일을 구분하여 로딩 할 수 있도록 하면 될 것 같네요

위에 적은 dev나 server는 자신이 원하는 대로 적으면 됩니다.

파라메터 적을시만 맞쳐주시면 될듯합니다.

예를 들어 위에 적으신 대로 상용1 상용2 이렇게 있으면

서버 시작시 -Dspring.profiles.active=real1 또는 -
Dspring.profiles.active=real2 이렇게 서버 시작 하는 스크립트에 파라메터를 적어 주시고

<beans profile="real1">
<!--상용1용 프로퍼티를 로딩 하는 빈 생성 -->
</beans>
<beans profile="real2">
<!-- 상용2용 프로퍼티를 로딩 하는 빈 생성-->
</beans>

이렇게 해주시면 될듯하네요.

반드시 3.1에서만 가능합니다.

상단에 namespace 도
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
이렇게 3.1 버전이어야 합니다.

그리고 <beans> 태그는 가장 설정 하단 부분에서만 사용 가능하더군요. 참고 하세요

최영목

unread,
Apr 8, 2012, 4:54:03 PM4/8/12
to ks...@googlegroups.com
저도 주로 maven profile을 이용합니다. ^^

물론 각 서버별 settings.xml은 형상관리로 별도 관리하고 있구요.


2012년 4월 8일 오후 11:33, 코바(이수홍) <sbc...@gmail.com>님의 말:
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.

namkyu Lee

unread,
Apr 8, 2012, 6:10:03 PM4/8/12
to ks...@googlegroups.com
현재 ant를 사용하고 있고, 상용 배포는 배포관리툴을 사용할 수 없는 곳이라 좀 노가다가 깊은 방법으로 빌드를 하고 있습니다. ;; 소스 레벨에서 해결 할 수 있는 방법이 필요 할 것 같아요.
답변 감사합니다. ^^

2012년 4월 8일 오후 9:42, wansu yang <ywsa...@gmail.com>님의 말:

namkyu Lee

unread,
Apr 8, 2012, 6:11:48 PM4/8/12
to ks...@googlegroups.com
현재 스프링 2.5를 사용하고 있습니다.
해당 기능 굉장히 매력적이나. 아직은 사용할 수 없는 현실이 안타까울 뿐입니다.


2012년 4월 8일 오후 11:33, 코바(이수홍) <sbc...@gmail.com>님의 말:
혹시 스프링 버전 3.1을 사용 하신다면
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.

정재한

unread,
Apr 8, 2012, 7:55:49 PM4/8/12
to ks...@googlegroups.com
그럼 자바의 System.getProperties를 사용해서 호스트명 구분해서 로딩하는건 어떤가요?

나의 iPhone에서 보냄

2012. 4. 9. 오전 7:11 namkyu Lee <lng...@gmail.com> 작성:

namkyu Lee

unread,
Apr 8, 2012, 8:04:14 PM4/8/12
to ks...@googlegroups.com
properties 파일은 말씀하신 방법처럼 하고 있었는데 방금 스프링 3.1에서 제공하는 profile 기능과 유사한 방법의 해결책을 찾았습니다. (현재 스프링 버전은 2.5입니다.)
톰켓 실행 아규먼트로 profile=confLocal 을 셋팅한 후 application-context.xml 파일에서  아래와 같이 설정하니 잘 동작하네요.

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:properties/${profile}.properties</value>
</list>
</property>
<property name="fileEncoding">
<value>UTF-8</value>
</property>
</bean>


해피하네요. ^^ 


2012년 4월 9일 오전 8:55, 정재한 <kakar...@gmail.com>님의 말:
Reply all
Reply to author
Forward
0 new messages