可以使用Apollo提供的@ApolloConfigChangeListener注解监听配置变化,当配置变化的时候将配置重新放入缓存中。
代码示例:
@Component
public class AppConfig {
@Autowired
private AppConfigRepository appConfigRepository;
@PostConstruct
private void init() {
List configList = appConfigRepository.findAll();
configList.forEach(config -> {
ConfigService.getAppConfig().put(config.getKey(), config.getValue()); // 将配置放入缓存中
});
}
@ApolloConfigChangeListener
private void onChange(ConfigChangeEvent changeEvent) {
changeEvent.changedKeys().forEach(key -> {
String value = ConfigService.getAppConfig().getProperty(key, null);
if (value != null) {
ConfigService.getAppConfig().put(key, value); // 将修改后的配置放入缓存中
}
});
}
}