2016-04-04 16 views
2

Yay çerçevesi için, özellikler dosyasının içindeki verileri el ile yeniden yüklemek istiyorum. Aslında, bu sunucu dosyasını elle çalıştırdığımda verileri manuel olarak yeniden yükleyecek olan yeniden yükleme sunucularını yazmam gerekiyor.Özellikler dosyasını Spring iletisinden el ile nasıl yeniden yüklersiniz SourceSource

İleti kaynağı için zaten yay yapılandırmasını tanımladım.

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource" 
     p:basename="classpath:/message" /> 

Ama ayarlarken Autoreload örneğin zamanın belirli miktarda Autoreload istemiyorum:

<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource" 
      p:basename="classpath:/message" 
      p:cacheSeconds="1" /> 

Ben clearCaches() ancak Autoreload vermeyerek önce denedim.

cevap

0

Özellik dosyalarını el ile yeniden yüklemek istediğinizi anlamıyorum. Spring zaten aşağıdaki gibi properties dosyasını yüklemeyi sağlar.

properties dosyanızı bahar yapılandırma dosyanızda yapılandırın. Örneğin. applicationContext.xml veya sping fasulye ise

<util:properties id="MY_CONFIG" location="classpath:MY_CONFIG.properties"/> 

spring-beans.xml, o ilkbahar fasulyesi çağırmak aşağıda

@Resource(name = "MY_CONFIG") 
private Properties properties; 

Kişisel sunucu uygulamasını enjekte edin.

Güncelleme

Eğer Servlet veya doğrudan

Load properties file in Servlet/JSP

+0

"Özellikleri el ile yeniden yükle", özellikler dosyasına yeni anahtar = değer çifti eklerseniz, özellikler dosyasındaki değişikliklerinizi güncellemek için bu web uygulamasını yeniden dağıtmaya gerek olmadığını gösterir. Bunun yerine, yeni servlet dosyası yazın, ileti kaynağını enjekte edin ve web uygulamanızı yeniden eklemeden değişikliklerimi güncelleyen özellikler dosyasını yeniden yüklemek için bu servleti manuel olarak çalıştırın. –

+0

http://stackoverflow.com/questions/14117117/dynamically-loading-properties-file-using-spring – CycDemo

+0

Denedim, demo. Ama çalışmıyor :). CacheSeconds yapılandırması için tanımladığımız her dakika otomatik olarak yüklenir. Üretim performansını azaltır. Bu yüzden mülklerim dosyasını değiştirdikten sonra manuel yeniden yükleme buluyorum. –

1

O şimdi çalışıyor diğer sınıflardan dosyasını yüklemek isterseniz. MessageSource'ı servlet dosyasına enjekte etmeniz ve clearCache() öğesini çağırmanız gerekir. Önceki özellikler verilerini temizler ve güncellenmiş özellikler dosyasını yeniden yükler. ReloadServlet.javayılında

,
ReloadableResourceBundleMessageSource rs = Global.getBean("messageSource", ReloadableResourceBundleMessageSource.class); 
rs.clearCache(); 

Global.java
yılında

private static ApplicationContext context; 

public static <T> T getBean(String s, Class<T> type) { 
     return context.getBean(s, type); 
} 

teşekkürler.

İlgili konular