Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在运行时定期从属性文件读取属性_Java_Spring_Properties File - Fatal编程技术网

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会有帮助,但我不能使用它,我想知道一些其他的方法,比如注释或配置更改之类的。