如何在Spring 4中使用注释重新加载属性文件?

我有一个简单的应用程序,其中我使用几个属性文件来获取其他用户编辑的内容(指向网站的链接等)。

我加载属性的类如下所示:

@Configuration

@PropertySource("classpath:salestipsWhitelist.properties")

public class SalestipsWhitelist {

@Autowired

Environment env;

public Environment getEnv() {

return env;

}

public void setEnv(Environment env) {

this.env = env;

}

@Bean

public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {

return new PropertySourcesPlaceholderConfigurer();

}

}

一些属性文件:

UPS_MPP_M_L=True

UPS_MPP_M_M=True

UPS_MPP_M_MP=True

UPS_MPP_M_S=True

这可以正常工作,但是如果我对properties-file进行更改,则必须重新加载应用程序以可视化所做的任何更改。

如果我将位置移动到磁盘而不是类路径,是否可以定期或手动重新加载?我不希望更改时自动完成此操作,因为我想控制何时完成/更新。

回答:

需要Java 7,Apache Commons日志记录,Apache Commons lang(v2.6)和Apache Commons Configuration:

package corejava.reloadTest;

import org.apache.commons.configuration.ConfigurationException;

import org.apache.commons.configuration.PropertiesConfiguration;

import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;

public class MyApplicationProperties {

private static PropertiesConfiguration configuration = null;

static {

try {

configuration = new PropertiesConfiguration("test.properties");

} catch (ConfigurationException e) {

e.printStackTrace();

}

configuration.setReloadingStrategy(new FileChangedReloadingStrategy());

}

public static synchronized String getProperty(final String key) {

return (String) configuration.getProperty(key);

}

}

并使用以下命令进行测试:

package corejava.reloadTest;

public class TestReloading {

public static void main(String[] args) {

while (true) {

try {

Thread.sleep(2000);

} catch (InterruptedException e) {

e.printStackTrace();

}

System.out.println(MyApplicationProperties.getProperty("key"));

}

}

}

更改test.properties时的输出是这样的(test.props的原始内容为key = value,后来在程序执行中更改为key = value1):

value

value

value

value

value

Jan 17, 2015 2:05:26 PM org.apache.commons.configuration.PropertiesConfiguration reload

INFO: Reloading configuration. URL is file:/D:/tools/workspace /AutoReloadConfigUsingApacheCommons/resources/test.properties

value1

value1

value1

以上是 如何在Spring 4中使用注释重新加载属性文件? 的全部内容, 来源链接: utcz.com/qa/404185.html

回到顶部