java 电子签章实现 springboot电子签章_springboot接口签名统一效验


一个使用springboot搭建的开发环境。包括实体类的增删改查,自定义多条件的查询,声明式事务管理。

代码仓库:https://github.com/markliu2013/springboot-crud-demo

项目文件结构图。


java 电子签章实现 springboot电子签章_spring_02


实现的是一个简单的员工管理系统,包括三个实体对象,员工类,部门类,薪水等级类。

员工类是系统的主要是实体对象,员工属于某一个部门,一个部门有多个员工,员工与部门是多对一关系。薪水等级类包括每个等级的薪水上限和下限,可以关联查询员工薪水属于哪个等级。实体类代码均在com.zfwhub.springboot.po下。

统一RESTful响应数据结构。

正常响应:


{


异常响应:


{


定义三个类封装响应的数据结构。BaseResponse,ResponseSuccess,ResponseError。

所有的Controller类方法签名返回BaseResponse,在方法体中,根据情况返回ResponseSuccess或ResponseError。对应没有数据响应,只是响应操作是否成功可以返回BaseResponse。

将所有的错误均包装成BaseResponse类型处理,errorCode 1-30可以定义为HTTP类型错误,如404之类的。30之后定义为业务类型的错误。

关于异常处理。

定义全局的异常处理类,com.zfwhub.springboot.exception.GlobalExceptionHandler,所有的异常响应都会在这里处理。根据异常类型,定义ResponseError类返回客户端。

事务管理。

程序中的Account实体类是为了测试转账的事务操作。

SpringBoot 有两种事务处理方式。

方式一:注解。

将service类上面加上@Transactional 注解,则service方法就会在一个事务中执行。对于只有查询操作的方法可以加上只读注释 @Transactional(readOnly=true)

方法二:AOP切面编程。

为了避免所有的service都需要加上注释,可以使用面向切面编程的声明式事务处理。

  1. 将所有的service类加入事务处理。
  2. 将所有的service类中,get或query开头的方法加入只读事务处理。
@Aspect


关于SpringBoot事务处理的方式可以参考这边文章,写的比较详细。

以前使用Spring的时候使用xml组装各种bean和配置aop,达到不影响Java代码的目的,改配置就改变系统功能的作用,同时对配置也有个整体的观感和把握,现在又把xml里的配置做为一个个@Configuration放到java代码里面来,折腾来折腾去,哈哈。

扩展思考题:

  1. 提供接口,查询出哪些人是经理(下面管着人的)。
  2. 查询部门列表的时候,查出每个部门里员工的平均薪水。
  3. 查询出每个部门里面谁的薪水是最高的。