请求示例:
POST http://localhost:8010/config/publish
Content-Type: application/json
{
"serviceName": "hzero-admin",
"label": "default",
"fileType": "json",
"content": "{year:2021,month: 3}"
}
可能原因:
只有当propertiesMap 的大小大于0时,才触发onChange事件,但是下面对map的值类型判断不包含int类型,导致该map容量为0。
修改传参,值改为String类型
POST http://localhost:8010/config/publish
Content-Type: application/json
{"lable":"default",
"serviceName":"hzero-admin",
"fileType":"json",
"content":"{"month":"6","year":"2023"}"
}
可以进入到onChange方法,serviceConfig作为旧值map,configValue作为新值map。
但是在方法org.hzero.config.app.service.impl.ServiceConfigServiceImpl#onChange(java.lang.String, java.lang.String, java.util.Map<java.lang.String,java.lang.Object>, java.lang.String, java.lang.Object)前,把 serviceConfig设置成了最新值,导致了configValue和serviceConfig永远一致
这一步导致了bug,修改代码为:
//注释掉更新方法,这一步导致时间无法被监听
/* serviceConfig.setConfigValue(JSON.toJSONString(config));*/
ServiceConfig copy = new ServiceConfig();
BeanUtils.copyProperties(serviceConfig,copy);
copy.setConfigValue(JSON.toJSONString(config));
configRepository.updateByPrimaryKey(copy);