从apollo拉取配置的配置类: 其中@RefreshScope必须添加
@Component("testConfigProperties")
@ConfigurationProperties(prefix = "my.test")
@RefreshScope
public class TestConfigProperties {
private String name;
private String age;
public String getName() {
return name;
}
public String getAge(){
return age;
}
public void setName(String names){
name=names;
}
public void setAge(String age1){
age=age1;
}
@Override
public String toString() {
return "TestConfigProperties{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
添加apollo的监听事件,然后刷新context
@Component
@Slf4j
public class TestRefresh implements ApplicationContextAware {
private ApplicationContext applicationContext;
/**
* 测试属性注入
*/
@Autowired
private TestConfigProperties testConfigProperties;
private final RefreshScope refreshScope;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext=applicationContext;
}
public TestRefresh(final RefreshScope refreshScope) {
this.refreshScope = refreshScope;
}
@ApolloConfigChangeListener(value = {"application", "TEST1.apollo"},
interestedKeyPrefixes = {"my.test."})
public void onChange(ConfigChangeEvent changeEvent) {
log.info("before refresh {}", testConfigProperties.toString());
refreshScope.refreshAll();
log.info("after refresh {}", testConfigProperties.toString());
}
}
修改apollo配置,@Autowired注入的bean同步改变。