2013-04-06 4 views
2

Я делаю веб-приложение Spring. Я использую Spring 3.1 и Eclipse. Я запускаю приложение через Jetty в Eclipse.Изменить текст сообщения Spring без перезапуска приложения?

У меня есть много страниц JSP, которые содержат текст, например, следующим образом:

<spring:message code="label.subject"/> 

Этот тип текста приходит из файла под названием messages_en.properties, определенных в контексте Spring:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> 
<property name="basenames"> 
<list> 
<value>messages</value> 
</list> 
</property> 
</bean> 

мне нужно постоянно изменяйте текст в messages_en.properties. Однако новый текст не отображается в приложении без перезагрузки Jetty, что для меня довольно неудобно.

Как изменить текст сообщения Spring без перезапуска Jetty?

Спасибо за помощь!

С уважением.

ответ

0

Вы можете сделать это разными способами. Вы можете отслеживать свои файлы для изменений с помощью монитора файлов и программно загружать ресурс. Вы можете взглянуть на это: http://docs.oracle.com/javase/tutorial/essential/io/notification.html

В принципе, идея заключается в том, чтобы приступить к регистрации приложения для мониторинга файлов на вашем ресурсе, а затем, когда вы его измените, просто повторно инициализируйте свой ресурс.

+0

Благодарим за предложение этого универсального решения. Хорошо знать! – curious1

3

Ответ на этот вопрос в ResourceBundleMessageSource's documentation itself: используйте ReloadableResourceBundleMessageSource.

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> 
    <property name="basenames"> 
    <list> 
     <value>messages</value> 
    </list> 
    </property> 
    <property name="cacheSeconds" value="1"/> 
</bean> 
+0

Это именно то, что я ищу, что-то построенное в течение весны. Благодаря! – curious1

+0

Я использовал ваш конфиг в Eclipse (juno) + Jetty 8.1.2 + Java 7, он не работает. Ты знаешь почему? – curious1

+0

Позвольте мне угадать ... Вы редактируете messages.properties под src /, а не target /? Я только что попробовал реплицировать вашу установку и сделал эту ошибку. – kryger