配置apollo的监听器
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.factory.annotation.Autowired;
import org.springframework.cloud.context.scope.refresh.RefreshScope;
import org.springframework.context.annotation.Configuration;
@Slf4j
@Configuration
public class ApolloConfigListener {
private final static String AUTH_INTERCEPTOR = "ict.auth.";
@Autowired
private RefreshScope refreshScope;
@ApolloConfigChangeListener
public void onChange(ConfigChangeEvent changeEvent) {
log.info("Apollo config changed --- ");
for (String key : changeEvent.changedKeys()) {
ConfigChange change = changeEvent.getChange(key);
log.info("Apollo change - changeType: {}, key: {}, oldValue: {}, newValue: {}",
change.getChangeType(), change.getPropertyName(), change.getOldValue(), change.getNewValue());
}
//配置刷新 - 单点和权限验证参数配置对象
if (changeEvent.changedKeys().parallelStream()
.anyMatch(changedKey -> changedKey.startsWith(AUTH_INTERCEPTOR))) {
refreshScope.refresh("authAppIdConfig");
}
log.info("Apollo config refresh done --- ");
}
}
封装属性
@Data
@Component
@RefreshScope
@ConfigurationProperties(prefix = "ict.auth")
public class AuthAppIdConfig {
/**
* 所有的权限中的appId
*/
private List<String> appIdList;
}
apollo的配置文件
ict:
auth:
appIdList:
- abc
- fgh
- qwer