如何搭建合适的Web框架?( 三 )

  • 最后 , FileTemplate可以设置为项目级别 , 即每个项目可以有独立的FileTemplate
  • 【如何搭建合适的Web框架?】具体的操作流程 , 在下面演示 。
    独立业务逻辑
    针对Service和测试的问题 , 将原来的Controller、Service和Model三层 , 拆分为四层:
    • Controller负责前端数据的接收和返回 , 以及统一异常处理
    • Service负责事务以及Domain层逻辑的组装 。这里就不会出现事务嵌套问题 , 也就不会导致抓不到期望的异常的问题
    • Domain负责业务逻辑
    • Model负责数据持久
    这样Service的职责减轻了 , 同时不再有事务嵌套的问题 。
    Model层优化
    上面提到 , 框架中最终放弃了Mapper.xml , 转而使用Mybatis的注解来实现持久化操作 。改用注解 , 规避了XML代码的编写 , 但是并没有解决框架对Mybatis的强依赖 。所以这里在Domain中新增了Repository接口层 , 此层用于定义Domain的持久化操作 , 而Model层中对Repository进行实现 , 这里的实现就是Mybatis实现 。这样做有两个好处:
    • 依赖倒置:原来是Domain依赖Model层 , 而现在是Model层依赖Domain层 , 这样当我要把Mybatis替换掉时 , Domain完全无感知 。
    • 独立测试:因为现在Domain不依赖于其它任何层 , 所以可以脱离数据库和容器来进行测试 。使得测试的效率不会随着项目的开发而越来越低

    如何搭建合适的Web框架?

    文章插图
     
    框架改进细节现在已经知道了 , 如何对框架进行改进 , 我们现在就开始着手进行改造 。其实主要的改造是对代码生成方式的改造 , 也就是编写FileTemplate、LiveTemplate和ScriptedExtensions 。下面对这三个功能进行简单的说明 , 先说ScriptedExtensions 。
    Scripted Extensions
    先来解释一下 , 什么是Scripted Extensions 。我们都知道 , 现在的IDE都是插件式的 , 也就是说 , 我们可以通过开发商提供的插件开发包来开发插件 , 扩展现有的IDE功能 。但是编写插件需要特定的开发环境 , 如果是一个很简单的功能 , 还要费劲去搭开发环境 , 挺麻烦的 。所以IDEA提供了Scripted Extensions , 可以理解为一个简化版的插件 , 就是可以通过脚本来扩展IDE功能 。
    IDEA提供了Database功能 , 可以连接数据库进行相关操作 。当你连接了数据库 , 在表上右击时 , 可以看到Scripted Extensions这个选项 , 里面有一个功能是可以基于表来生成POJO的groovy脚本 。
    但是功能比较low:
    • 包名是写死的:com.sample
    • 没有生成table注释
    • 没有基于lombok来简化getter和setter
    不过好在 , 我们能基于这个脚本来自行修改 , 在刚才的Scripted Extensions菜单里 , 有个Go to Scripts Directory选项 , 点击后 , 可以进入脚本目录 。
    如何搭建合适的Web框架?

    文章插图
     
    直接对这个groovy文件Ctrl+c , Ctrl-v , 复制一份 , 重命名一下 , 基于这个脚本进行修改即可 。具体怎么修改 , 按照自己的需求来 , 里面主要就是根据表信息对String的拼接而已 。
    FileTemplate
    FileTemplate是IDEA提供的生成文件的模板 , 你在点击菜单的File->New...以后 , 出现的各种文件 , 都是基于FileTemplate来实现的 。我们自定义的Controller、Service、Domain等类 , 都可以通过FileTemplate来简化创建 。
    具体使用方式为,按下Ctrl-Alt-S呼出设置菜单 , 点击Editor->File And Code Template , 在里面新增Template即可 。
    如何搭建合适的Web框架?

    文章插图
     
    几点说明: