스프링3 프로퍼티 리로드 가능한가요?

2,539 views
Skip to first unread message

자바개발자

unread,
Jul 17, 2012, 8:58:16 PM7/17/12
to ks...@googlegroups.com
안녕하세요?
이번 프로젝트에서 스프링 3.1 을 사용하려고 합니다.

*.properties 파일이 수정되면 WAS 재기동 없이
수정내용을 반영하고 싶은데 방법이 있나요?

구글링을 해봐도 잘 나오지 않네요..

늘 행복하세요..^^

Sungchul Park

unread,
Jul 18, 2012, 11:36:19 PM7/18/12
to ks...@googlegroups.com
*.properties 파일을 어떤 용도로 사용하느냐에 따라서 다를 것 같습니다.

  • 해당 프로퍼티스 파일을 어느 부분에서 사용하는지
  • 단순히 프로퍼티스 파일의 내용을, WAS 재기동 없이, 새로 변경된 내용으로 읽기를 원하는지
  • 변경되기 전에 프로퍼티스에서 읽어서 객체 생성에 사용한 결과도 새로 변경된 값에 따라서 자동으로 바뀌기를 원하는지
만약 메시지를 I18N 차원에서 리소스 번들에 담아 활용하고 계시다면 ReloadableResourceBundleMessageSource를 사용하시면 됩니다.

12. 7. 18. 오전 9:58, 자바개발자 쓴 글:
--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
웹에서 이 토론을 보려면 https://groups.google.com/d/msg/ksug/-/7OQgN3Yli_cJ을 (를) 방문하세요.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.

자바개발자

unread,
Jul 19, 2012, 12:11:50 AM7/19/12
to ks...@googlegroups.com
제가 하고 싶은 것은 프로퍼티 파일에 있는 디렉토리 경로라던지
딜레이시간 뭐 이런 값들을 WAS 재기동 없이 반영하고 싶은 것입니다.
프로퍼티에 있는 값들이 바뀔 일은 거의 없지만......

예를 들어서 특정사용자 아이디를 프로퍼티 파일에서 관리한다고 했을 때
아이디는 늘어날 수도 있고 줄어들 수도 있습니다.
아이디가 늘어나고 줄어들 때마다 WAS 를 재기동 하지 않고 수정된 내용을 반영하고 싶은 것입니다.
(이런 경우는 DB를 이용해야 하지만... 예를 들어서......)


늘 행복하세요..^^

Sungchul Park

unread,
Jul 19, 2012, 12:16:06 AM7/19/12
to ks...@googlegroups.com
그러니까 프로퍼티스 파일을 직접 작성하신 코드에서 읽어서 활용하시는지,
아니면 어떤 컴퍼넌트나 프레임워크의 설정 파일로 사용하시는지 알아야 정확
한 설명을 드릴 수 있다는 얘기인데요.
직접 파일을 읽으신다면 파일이 변경되었는지 정기적으로 확인해서 다시 읽도
록 코드를 작성하면 되니 별 문제가 없고 후자라면 정확히 어떤 부분에 어떤
용도로 프로퍼티스 파일을 사용하느냐에 따라 다를 것 같습니다.

12. 7. 19. 오후 1:11, 자바개발자 쓴 글:
> --
> Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이
> 전송되었습니다.
> 웹에서 이 토론을 보려면
> https://groups.google.com/d/msg/ksug/-/encrH-E3iIoJ을 (를) 방문하세요.

Jihwan Kim

unread,
Jul 19, 2012, 7:44:59 PM7/19/12
to ks...@googlegroups.com
WAS재기동없이 프로퍼티를 변경을 반영하고 싶다는 얘기죠?

저같은 경우 org.apache.commons.configuration.PropertiesConfiguration 을 활용하여 처리하였습니다.

구체적으로 예를 들면
<bean id="runtimeProperties"
class="org.apache.commons.configuration.PropertiesConfiguration">
<constructor-arg type="java.lang.String"
value="#{configProperties['runtime.properties.path']}" />
<property name="reloadingStrategy" ref="reloadingStrategy" />
</bean>
<bean id="reloadingStrategy"
class="org.apache.commons.configuration.reloading.FileChangedReloadingStrategy"
/>


@Component
public class RuntimePropertiesUtil {

@Autowired
private PropertiesConfiguration runtimeProperties;

public String getApilogTracekey() {
return (String)runtimeProperties.getProperty("apilog.tracekey");
}

}

위와같이 선언하신 후 필요한 곳에서 RuntimePropertiesUtil 을 Autowired해서 사용하는 방식으로 처리했습니다.


2012년 7월 19일 오후 1:16, Sungchul Park <gyu...@gmail.com>님의 말:

자바개발자

unread,
Jul 19, 2012, 10:46:23 PM7/19/12
to ks...@googlegroups.com
감사합니다.
한번 테스트를 해봐야겠네요..

늘 행복하세요..^^
Reply all
Reply to author
Forward
0 new messages