如何从Spring messageSource手动重新加载属性文件

时间:2016-04-04 02:02:43

标签: java spring properties

对于spring框架,我想在属性文件中手动重新加载数据。实际上,当我手动运行这个servlet文件时,必须编写将手动重新加载数据的重载servlet。

我已经为messageSource定义了spring配置。

<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()尝试过但没有自动重载。

2 个答案:

答案 0 :(得分:1)

现在正在运作。需要将messageSource注入servlet文件并调用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);
}

感谢。

答案 1 :(得分:0)

我不知道,你的意思是手动重装属性文件。 Spring已经提供加载properties文件,如下所示。

在spring配置文件中配置properties文件。例如。 applicationContext.xmlspring-beans.xml

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

在你的sping bean中,注入如下

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

你的servlet调用那个spring bean。

<强>更新

如果您想直接从Servlet或其他类加载文件

Load properties file in Servlet/JSP