Java 在运行时定期从属性文件读取属性
有一些属性,我想每隔一段时间读取这些属性,如果属性中有任何更新,我将在此基础上采取一些措施Java 在运行时定期从属性文件读取属性,java,spring,properties-file,Java,Spring,Properties File,有一些属性,我想每隔一段时间读取这些属性,如果属性中有任何更新,我将在此基础上采取一些措施 @Value("${sms.smpp.country.list:{}}") private String smppCountryList; @Value("${sms.smpp.country.config.list:{}}") private String smppCountryConfigList; @Value(&q
@Value("${sms.smpp.country.list:{}}")
private String smppCountryList;
@Value("${sms.smpp.country.config.list:{}}")
private String smppCountryConfigList;
@Value("${sms.smpp.properties.file.location:{}}")
private String propertiesFileLocation;
我已经编写了一个使用cron读取属性的代码,下面是代码
@Scheduled(cron = "0 0/7 * * * ?")
public Properties readPropertiesFile() {
Properties prop = null;
try (InputStream input = new FileInputStream(propertiesFileLocation)) {
prop = new Properties();
prop.load(input);
} catch (IOException ex) {
logger.info("[SMPP] [CONFIG CRON] Exception occurred while reading the properties file: [{}]",ex.getMessage());
}
return prop;
}
该代码正在被cron调用,或者我也可以在该文件上编写一个onFileChangeHandler
但是有什么简单而优雅的方法可以做到这一点,比如spring可以处理吗?编辑1:查看您的代码,我想指出一点,@Value变量不会用更新的值更新,即使您连续运行cron作业 如果您经常想查看配置更改,Spring Boot会附带一个Spring配置服务器 您的micro服务将是最新的配置,无需在代码中写入任何行
查看Spring云配置服务器编辑1:查看您的代码,我想指出一点,@Value变量不会用更新的值更新,即使您连续运行cron作业 如果您经常想查看配置更改,Spring Boot会附带一个Spring配置服务器 您的micro服务将是最新的配置,无需在代码中写入任何行
查看一个Spring云配置服务器您必须使用Spring配置服务器,如果您想更新用@Value注释的属性,您需要用@RefreshScope注释类。您必须使用Spring配置服务器,如果您想更新用@Value注释的属性,您需要使用@RefreshScope注释该类。在当前解决方案中,
@Value
注释的属性是否自动刷新?我会说不,但我想知道。@RUARO Thibault不,这些值没有刷新,但在读取属性文件后,我正在更新这些值。在您当前的解决方案中,由@Value
注释的属性是否自动刷新?我会说不,但我想知道。@RUARO Thibault不,这些值没有被刷新,但在读取属性文件后,我正在更新这些值。在使用cron读取@Value变量后,我正在更新它们。请尝试Spring cloud Config Server(Spring建议这样做),你能分享一下你是如何更新这个值的吗?我是这样更新这个值的:smppCountryList=readPropertiesFile.get(sms.smpp.country.list)
这需要大量的手工工作。今天,它是一个文件,当它将是1000,那么它将创造很多问题。我建议不要这样做,使用SpringCloudConfigServer。如果这有助于投票!!是的@Shivendra,Spring Cloud Config Server会有帮助,但我不能使用它,我想知道其他一些方法,比如注释或配置更改之类的。在使用cron读取@Value变量后,我正在更新它。尝试Spring Cloud Config Server(Spring建议这样做),你能分享一下你是如何更新这个值的吗?我是这样更新这个值的:smppCountryList=readPropertiesFile.get(sms.smpp.country.list)
这需要大量的手工工作。今天,它是一个文件,当它将是1000,那么它将创造很多问题。我建议不要这样做,使用SpringCloudConfigServer。如果这有助于投票!!是的@Shivendra,SpringCloudConfigServer会有帮助,但我不能使用它,我想知道一些其他的方法,比如注释或配置更改之类的。