Code Review
这周被点名来做code view了来着,然后昨天晚上做了一个小时的code review,还是相当紧张,然后今天改了一天代码 特此总结
ApplicationListener
这个地方原来主要实现的功能是spring3中的功能,在启动了整个项目之后,让watch pods和watch service启动并且只启动一次。
(启动一个单线程,回调函数,生命周期)
原来的做法是使用spring task在应用启动之后,就启动一次然后一直运行
// @Scheduled(cron = "${schedule.kubeService}")
@Scheduled(fixedDelay = 999999999)
protected void gitlabProjectTask() {
kubernetesService.collectServices();
customServiceService.bindServiceAndProject();
kubernetesService.watchServices();
}
// @Scheduled(cron = "${schedule.kubePod}")
// @Scheduled(cron = "0 0,14 6,18 * * ? ")
//taskexecutor
// ScheduledExecutorTask
// new 一个单线程一直跑就可以了
@Scheduled(fixedDelay = 999999999)
public void collectPod() {
kubernetesService.collectPods();
kubernetesService.watchPods();
}
现在使用的是ApplicationListener
public class KubernetesServiceImpl implements KubernetesService, ApplicationListener<ApplicationReadyEvent> {
//生命周期
@Override
public void onApplicationEvent(ApplicationReadyEvent event) {
collectServices();
customServiceService.bindServiceAndProject();
watchServices();
collectPods();
watchPods();
}
}
这样既可
这样就可以在线程启动的时候异步的启动这些服务
使用注解(to do)或者继承ApplicationListener
MongoDB的修改操作方式
在修改mongoTemplate的update的时候,会发现使用update的话,会需要修改很多的key值,这样的操作不如直接全部删了然后全部再加进去
Query query = Query.query(Criteria.where("classId").is("1"));
Student student = new Student("1", "lisi", 18, "man");
Update update = new Update();
//update.push("Students", student);
update.addToSet("Students", student);
mongoTemplate.upsert(query, update, "class");
使用Strings的时候nullOrEmpty的判断
Strings.isNullOrEmpty(username)
推荐使用的是Apache的StringUtil或者google的
不能使用 username.equals("")
如何只在debug的时候才开始打印日志
log.debug("user: {}", username);
if (log.isDebugEnabled()) {
for (Map.Entry<String, CustomServiceDeployDto> stringCustomServiceDeployDtoEntry : serviceAndTag.entrySet()) {
log.debug(" service and tags: {}", JSONObject.toJSON(stringCustomServiceDeployDtoEntry));
}
}
泛型警告的问题
将redisTemplate修改为StringRedisTemplate
返回空的集合应该使用
Collections.emptyList()
bug修复
历史记录刷新的时候,value是一个map,而map中的service的值没有