例如读取Apollo配置
@Component @ConfigurationProperties(prefix = "account.tenant") public class ShuidiAppCodePropertiesCopy { private String appCode; public String getAppCode() { return appCode; } public void setAppCode(String appCode) { this.appCode = appCode; } }
修改Apollo值后 该配置仍为启动时读取的值
添加 @RefreshScope 仍不行
添加事件监听解决
import com.ctrip.framework.apollo.model.ConfigChange; import com.ctrip.framework.apollo.model.ConfigChangeEvent; import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeansException; import org.springframework.cloud.context.environment.EnvironmentChangeEvent; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; @Component @Slf4j public class ApolloConfigChanged implements ApplicationContextAware { private ApplicationContext applicationContext; @ApolloConfigChangeListener private void someChangeHandler(ConfigChangeEvent changeEvent) { for (String key : changeEvent.changedKeys()) { ConfigChange change = changeEvent.getChange(key); log.info("Found change - {}", change.toString()); } // 更新相应的bean的属性值,主要是存在@ConfigurationProperties注解的bean this.applicationContext.publishEvent(new EnvironmentChangeEvent(changeEvent.changedKeys())); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)