今天终于给我分发了工作任务。。激动到内牛满面。。
虽然很激动,但也很忐忑,因为这是第一次从校园到工作岗位的开发,不是自己随便玩玩,要对代码负责的,所以挺紧张的说实话。
第一个项目就是分布式的一个电商平台。这也是我第一次接触分布式。紧张+1。
其中用到了很多技术都是我从未了解过的,紧张+2。。。
项目技术选型为springBoot 、spring data jpa、motan、zookeeper、ridis、oracle、freeMark等等,咳咳,都是我的新名词。=。=
今天做记录的主要是关于motan的使用上的一些配置问题。
工作任务是在页面上加载一个企业组织结构树,分别从四张表里抓区公司列表层级、部门列表层级、人员信息、人员职位部门映射。
这里就不讲前台的设计和实现了,因为我是做后台的,值负责向前台提供指定的数据就好了。
前台是从list集合里抓取数据的,所以我要给在后台向前台提供一个list集合,里面要有部门id、部门名称、部门上级id等信息。
public List<JsonModel> jstree(){
//插入公司
List<JsonModel> list = new ArrayList<>();
List<CoreCompany> hq = companyApi.findByIsDelete(false);
for (int i=0;i<hq.size();i++) {
if (Lang.isEmpty(hq.get(i).getParent())) {
JsonModel jsonModel = new JsonModel();
jsonModel.setId(hq.get(i).getId());
jsonModel.setParent("#");
jsonModel.setText(hq.get(i).getName());
jsonModel.setIcon("false");
list.add(jsonModel);
} else {
JsonModel jsonModel = new JsonModel();
jsonModel.setId(hq.get(i).getId());
jsonModel.setParent(hq.get(i).getParent().getId());
jsonModel.setText(hq.get(i).getName());
jsonModel.setIcon("false");
list.add(jsonModel);
// 插入部门
List<CoreDepartment>bm=departmentApi.findAllByCompanyidAndIsDelete(hq.get(i).getId(),false);
for(int j=0;j<bm.size();j++){
if(bm.get(j).getParent()==null){
JsonModel jsonModel1=new JsonModel();
jsonModel1.setId(bm.get(j).getId()
jsonModel1.setParent(bm.get(j).getCoreCompany().getId());
jsonModel1.setText(bm.get(j).getName());
jsonModel.setIcon("false");
list.add(jsonModel1);
} else
{
JsonModel jsonModel1=new JsonModel();
jsonModel1.setId(bm.get(j).getId());
jsonModel1.setParent(bm.get(j).getParent().getId());
jsonModel1.setText(bm.get(j).getName());
jsonModel.setIcon("false");
list.add(jsonModel1);
}
}
}
}
return list;
在如下代码中出现异常
List<CoreDepartment>bm=departmentApi.findAllByCompanyidAndIsDelete(hq.get(i).getId(),false);
经过检查和查资料发现,还是因为对于motan的工作原理理解不深造成的。
这里使用了api接口
在实现了api接口的文件里对该方法进行了具体是实现,调用了service中的业务方法
然后问题来了,在实现了这个接口的类里,我没有把他注解为motan服务,所以代码执行到这里根本就不能再motan上发现服务,所以出错
@MotanService(basicService = "motanServerBasicConfig")//一开始没写
public class CoreCompanyApiImpl implements CoreCompanyApi {
加上注解后,问题解决,成功加载了企业组织架构
现在我还在思考一个问题,在这次开发过程中,我发现从较大规模的数据库中提取数据然后用for循环遍历有很大的系统开销,性能太差,请问还有更加高性能的遍历方式吗?