使用以下 Bean 每 1 秒重新加载一次 config.properties。
@Component
public class PropertyLoader {
@Autowired
private StandardEnvironment environment;
@Scheduled(fixedRate=1000)
public void reload() throws IOException {
MutablePropertySources propertySources = environment.getPropertySources();
PropertySource<?> resourcePropertySource = propertySources.get("class path resource [config.properties]");
Properties properties = new Properties();
InputStream inputStream = getClass().getResourceAsStream("/config.properties");
properties.load(inputStream);
inputStream.close();
propertySources.replace("class path resource [config.properties]", new PropertiesPropertySource("class path resource [config.properties]", properties));
}
}
您的主配置将如下所示:
@EnableScheduling
@PropertySource("classpath:/config.properties")
public class HelloWorldConfig {
}
而不是使用@Value,每次您想要使用最新的属性时
environment.get("my.property");
注意
尽管示例中的 config.properties 取自类路径,但它仍然可以是已添加到类路径中的外部文件。