从零开始写Java项目

197 阅读2分钟

偶然机会,开始用Java写项目。之前一直奔波于JavaScript的体系中,从Jquery、Angualr、Node、Vue,百花争艳。

事件插件

八月底入职开始就着手SpringCloud一系列学习,最终调研集成Mybatis-plus。开始编写的功能是个事件管理的公共插件。

  • 事件注册
  • 事件发布,并支持各个业务模块发布不同实体类信息。支持异步、同步发布。
  • 事件订阅,订阅者可以自定义订阅某种或者某些事件

期间用到了反射、泛型、线程、线程安全队列等知识,恶补Java基础语法、JVM运行原理勉强写完事件插件并测试实践于项目中。

反射

Class c = Class.forName(clazz);
BaseApplicationEvent baseApplicationEvent = (BaseApplicationEvent) applicationContext.getBean(c)
baseApplicationEvent.callbackEvent(eventModel)

泛型

public class EventModel<T> implements Serializable

线程

static class AsyncEvent extends Thread implements Runnable

线程安全队列

public static List<EventModel> eventQueue = new Vector<EventModel>()

存储卷模块

第一个开发的业务模块就是这个存储卷模块,业务不多赘言。从driver层开始往上写,构建Client管理器,编写service层逻辑,输出接口。期间涉及到:

  • 事务保证数据一致性
  • 定义系统返回码
  • 封装controller返回体
  • 封装校验注解
  • 利用Spring切面拦截处理
  • 封装系统异常
  • 记录日志,日记追踪轨迹,聚合日志
  • 熟悉Mybatis-plus快捷语法
  • 加并发锁机制,避免数据库数据混乱
  • 通过自研任务管理器发起单次异步任务、周期任务
  • 通过自研调度算法调度创建

对象存储

对象存储模块涉及差异主要集中在业务,也涉及了存储卷几乎全部知识点。期间主要涉及

  • 调取第三方SDK Client,封装第三方Client。

后记

写了两个月发现难点主要集中在蜿蜒曲折的业务流程上,直到现在磕磕绊绊创建出一个裸机。创建一个自带安装过软件的虚拟机,还才起步,愿Java仕途坦荡。