Java에서는 웹 응용 프로그램에서 동적 리소스 번들을 다시로드하는 방법은 무엇입니까?
-
03-07-2019 - |
문제
FMT : SetBundle을 사용하여 데이터베이스에서 리소스 번들을로드합니다 (ResourceBundle 클래스를 확장하여이를 수행했습니다). 데이터베이스에서 값을 수정하면 웹 서버를 다시로드하여 웹 앱에 새 값을 표시해야합니다.
웹 서버를 다시 시작하지 않고 새 값을 사용하는 간단한 방법이 있습니까?
(우리는하다 ~ 아니다 항상 데이터베이스에서 값을 찾아보고 싶지만 예를 들어 특수 'admin'URL을 호출하여 캐시를 무효화하고 싶습니다).
편집 : JDK 1.4를 사용하고 있으므로 해당 버전의 솔루션을 선호합니다. :)
해결책
다른 사람들이 의견에서 지적했듯이, 당신은 봄, 특히 repoadableresourcebundleMessagesSource.
다른 팁
JDK 1.6을 사용하는 경우 콜백 메소드를 사용할 수 있습니다. getTimeToLive()
그리고 needsReload()
안에 ResourceBundle.control 번들 캐시에 데이터베이스에서 새 값을로드 해야하는지 제어합니다.
먼저 연장되는 클래스를 만들 수 있습니다 ReloadableResourceBundleMessageSource
내부 클래스 보호 방법을 노출시키기 위해 getProperties
. 이 메소드는 동시 맵을 반환합니다 PropertiesHolder
물체. 둘째, 웹 구성 클래스에서 해당 확장 클래스의 Bean을 구성해야합니다. 이제 서비스 또는 비즈니스 계층에서 MessageSource를 사용할 수 있습니다. 참조 링크는 다음과 같습니다 다시로드 가능한 메시지 소스 번들을 구성하십시오