반응형

java application server의 경우 별도로 구성을 하지 않으면,

쪼그마한 텍스트 파일을 변경하여도, 서버를 내렸다 올려야하는 번거로움이 추가된다.

 

하지만, properties파일의 경우에는 수시로 변경이 가능하게 해야 하는 요구사항이 들어오기도 한다.

 

기본적으로, Spring Framework를 사용한다면, .properties파일의 경우 @Value를 이용하기 위해

PropertyPlaceholderConfigurer를 사용하게 된다.

 

물론, 이 기능이 사용하기는 가장 편리하지만, auto reload를 지원하지 않는다.

 

그래서 PropertyPlaceholderConfigurer대신 ReloadResourceMessageSource를 이용해야만,

가장 간단하게 auto reload를 구현할 수 있다.  

(apache commons의 configuration도 있긴하지만.. 이건 톰캣 사용 시 autoDeploy를 false로 바꿔야 되는 한계가 존재함.)

 

ReloadResourceMessageSource의 경우 에러메시지 / 로컬라이징 등에서 많이 사용하고 있을텐데, Basename옵션으로 지정을 해두었을 것이다.

클래스를 직접 까보면 Basenames라는 옵션이 별도로 있다.  

이걸 이용해서, 기존에 사용하던 에러메시지 / 로컬라이징의 properties도 넣어주고, 새로 추가될 .properties도 넣어줄 수가 있다.

(당연하겠지만, properties파일의 key값은 다르게 해주는 센스가 필요함..  

동일한 key가 있는 경우 어떻게 처리할지에 대해선 고민도 안해봤고, 테스트도 해보지 않았다-_- 난 그렇게 안만들거니깐)

 

앞에 포스팅에도 작성한바 있지만, reload가 되게 하려면 cacheSeconds옵션을 +값으로 지정해주어야 하며,

톰캣 server.xml의 reloadable은 false로 지정해주자.

반응형
,