模块结构

从技术角度分系统模块(project)分为:web,server,service,dao,scheduler。

模块结构

  • web

    包含与用户交互的html、js及css等前端代码,没有复杂的业务逻辑,业务逻辑通过dubbo调用委托给server完成。此层不能直接访问数据库。

  • server

    按照业务功能划分,每个独立业务都有自己的server(如:member-server,account-server,repayment-server),server层通过dubbo对外提供服务。server层也不包含复杂的业务逻辑,二是委托给service层完成。

  • service

    是真正实现业务逻辑的地方,根据是否有事务性要求,分为:普通service和事务Service。事务service中只能包括数据库调用,redis访问,zookeeper访问,不能包含其他对外通信

  • dao

    保存ORM代码及配置,包括自动代码生成的和开发人员手写的。由于之前MyBatis自动生成的Mapper不支持加锁语句:select for update, 加锁语句也是在dao层写的,现在MyBatis自动生成的Mapper已经可以支持加锁语句了,建议以后加锁使用Mapper实现,不要再手工写了。

    public interface RepaymentLoanInfoMapper {
      ...
      RepaymentLoanInfo lockByPrimaryKey(@Param("id") String id);
    
      List<RepaymentLoanInfo> lockByExample(RepaymentLoanInfoExample example);
    }
    
  • scheduler

    定时任务,重试任务,非实时任务等在后台跑的任务放在这里。

results matching ""

    No results matching ""