2016-04-04 34 views
2

Springのフレームワークでは、プロパティファイル内のデータを手動でリロードしたいと思います。実際には、手動でこのサーブレット・ファイルを実行すると、手動でデータをリロードするリロード・サーブレットを作成する必要があります。SpringのmessageSourceからプロパティファイルを手動でリロードする方法

私はすでにmessageSourceのスプリング設定を定義しています。

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

しかし、例えば一定の時間で自動再したくない設定する際に自動再することができます

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

を私は(clearCachesで前に試してみました)が、自動再ません。

答えて

0

私は、あなたが手動でプロパティファイルをリロードすることを意味するかどうかわかりません。 Springは既に下記のようにpropertiesファイルをロードしています。

propertiesファイルをスプリング構成ファイルに設定します。例えば。 applicationContext.xmlたりSPING豆で

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

spring-beans.xml、その春の豆呼び出し、以下のよう

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

あなたのサーブレットを注入。

更新

あなたは、サーブレットまたは他のクラスからファイルをロードしたい場合は、直接

Load properties file in Servlet/JSP

+0

「手動でプロパティをリロードする」とは、プロパティファイルに新しいkey = valueのペアを追加すると、このWebアプリケーションを再デプロイしてプロパティファイルの変更を更新する必要がないことを意味します。この代わりに、新しいサーブレット・ファイルを作成し、メッセージ・ソースを挿入し、このサーブレットを手動で実行して、Webアプリケーションを再デプロイせずに変更を更新するプロパティ・ファイルを再ロードします。 –

+0

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

+0

私はすべてデモを試しました。しかし、働いていない:)。 cacheSeconds設定では、定義した分ごとに自動読み込みを行います。生産性が低下します。だから、私は自分のプロパティファイルを変更した後、手動リロードを見つけるのです。 –

1

それが今取り組んでいます。 MessageSourceをサーブレットファイルに挿入し、clearCache()を呼び出す必要があります。以前のプロパティデータをクリアし、更新されたプロパティファイルをリロードします。

ReloadServlet.java

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

Global.java、

private static ApplicationContext context; 

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

感謝。

関連する問題