package com.ehomepay.epcc.config; 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; /** * 动态刷新Apollo配置 */ @Slf4j @Component public class ApolloConfig implements ApplicationContextAware { private ApplicationContext applicationContext; @ApolloConfigChangeListener() public void onChange(ConfigChangeEvent changeEvent) { refreshProperties(changeEvent); } private void refreshProperties(ConfigChangeEvent changeEvent) { this.applicationContext.publishEvent(new EnvironmentChangeEvent(changeEvent.changedKeys())); // 输出变更的配置信息 ConfigChange change; for (String key : changeEvent.changedKeys()) { change = changeEvent.getChange(key); log.info("ApolloConfig change success, key: {}, oldValue: {}, newValue: {}, changeType: {}", change.getPropertyName(), change.getOldValue(), change.getNewValue(), change.getChangeType()); } } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } }