只需要监听 ActionConfigEvent 类便可以实现:
假如想做一个动态“业务开关“的功能,只需要定义好对应的变量Constant.COLUMN_VERSION_KEY在事件中监听对应的配置项,便可以进行对应的业务数据初始化等相关处理。
import com.purgeteam.dynamic.config.starter.event.ActionConfigEvent;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Component
public class NacosListener implements ApplicationListener<ActionConfigEvent> {
@Autowired
private PlatformService platformService;
@Override
public void onApplicationEvent(ActionConfigEvent environment) {
Map<String, HashMap> map = environment.getPropertyMap();
for (Map.Entry<String, HashMap> entry : map.entrySet()) {
String key = entry.getKey();
Map changeMap = entry.getValue();
String before = String.valueOf(changeMap.get("before"));
String after = String.valueOf(changeMap.get("after"));
log.info("配置[key:{}]被改变,改变前before:{},改变后after:{}", key, before, after);
if (Constant.COLUMN_VERSION_KEY.equals(key)) {
// 需要监听处理的逻辑
platformService.updateColumns();
}
}
}
}