SSM框架项目开发过程整理

来源:互联网 发布:苹果远程连接软件 编辑:程序博客网 时间:2024/05/21 10:30

SSM框架项目开发过程整理

本项目构建自慕课网《Java高并发秒杀API》课程系列
http://www.imooc.com/course/programdetail/pid/59

开发轨迹

  • 业务分析
  • DAO层实现
    • 接口设计 + SQL编写
    • 使用Junit测试功能
  • Service层实现
  • Web层实现
  • 高并发优化

业务分析

不多讲,针对业务需求做功能分割分层,抽象出实体和业务逻辑设计数据库

DAO层实现

涉及包:

  • dao
    • Data Access Object 数据访问对象
    • 将非对象数据以对象的形式操纵
  • entity
    • 数据库表映射的实体

流程:

  • 使用配置文件整合Spring和MyBatis
  • 设计和建立数据库及表,根据ORM规则创建Entity类
  • 根据业务逻辑(CRUD)创建DAO接口
  • 根据DAO接口创建对应的mapper.xml,手动书写SQL语句
    • 注意:多参数传递要使用@Param注解
  • 创建Junit4测试用例,并整合Spring
  • 测试MyBatis的DAO层自动实现的功能

优点:

  1. 与其他层实现分离(DAO层拼接等逻辑在Service层实现)
  2. DAO层工作演变成:接口设计 + SQL编写
  3. 代码与SQL分离,方便Review

Service层实现

涉及包:

  • service
    • 具体业务实现接口定义
  • service.impl
    • 实现service接口的实现类
  • dto
    • Data Transfer Object 数据传输对象
    • 用于在不同层直接的数据传输(如Service层与Web层)
    • 隔离不同层,降低层间耦合
  • exception
    • 自定义的业务exception
  • enums
    • 数据字典,存放业务相关的常量数据

流程:

  • 设计Service接口,dto数据传输对象,自定义Exception和enum
  • 设计Service接口实现类
  • 配置Spring service层的xml配置及注解
  • 创建Junit4测试用例并进行测试

Web层实现

前端交互设计:

  • 根据需求设计前端交互流程
  • 人员
    • 产品
      • 解读用户需求,设计满足用户需求的文档
    • 前端
      • 负责页面展示
    • 后端
      • 负责存储展示

Restful接口:

  • 一种优雅的URI表述方式
  • 资源的状态和状态转移
  • 示例
    • GET /seckill/list
      • OK
    • POST /seckill/execute/{seckillId}
      • WRONG
    • POST /seckill/{seckillId}/execution
      • OK(使用名词执行,POST表动作)
    • GET /seckill/delete/{id}
      • WRONG
    • DELETE /seckill/{id}/delete
      • OK
  • Restful规范
    • GET
      • 查询操作
    • POST
      • 添加或修改操作
      • 非幂等
    • PUT
      • 修改操作
      • 幂等,可以使用相同参数重复执行,并能获得相同结果的函数,不用担心重复执行会对系统造成改变
      • 对同一URL的多个请求应该返回同样的结果
    • DELETE
      • 删除操作
  • URL设计
    • /模块/资源/{标示}/集合1/...
    • 例子
      • /user/{uid}/friends
        • 好友列表
      • /user/{uid}/followers
        • 关注者列表
  • 秒杀API的URL设计
    • GET /seckill/list 秒杀列表
    • GET /seckill/{id}/detail 详情页
    • GET /seckill/time/now 系统时间
    • POST /seckill/{id}/exposer 暴露秒杀
    • POST /seckill/{id}/{md5}/execution 执行秒杀

SpringMVC基础:

  • 围绕Handler开发
  • URL映射 注解@RequestMapping
    * 支持标准URL
    * Ant风格URL(?匹配一个字符,匹配任意字符,*匹配任意路径)
    * 带{xxx}占位符的URL
  • 请求参数绑定
    • @PathVariable(“xxx”)
      • 对应URL中的占位符{xxx}
    • @RequestParam(“xxx”)
      • 对应的请求参数
  • 请求方法限制
    • @RequestMapping(method=RequestMethod.xxx)
      • GET,POST,PUT,DELETE
  • 请求转发和重定向
    • 转发
      • return “redirect:/url”;
    • 重定向
      • return “forward:/seckill/list”;
  • 数据模型赋值
    • ModelAndView或Model
      • 调用addAttribute方法
  • 返回json数据
    • @RequestMapping(produces=”application/json;charset=UTF-8”)
    • @ResponseBody
    • 直接返回POJO就能转换成json
  • cookie访问
    • 参数注解 @CookieValue(value=”xxx”,require=”false”)

涉及包:

  • dto
    • 封装泛型JSON result
  • web
    • 实现Controller

流程:

  • 创建Controller及各接口映射的方法
  • 使用注解描述各接口的映射,限制及参数获取
  • 调用Service(由SpringDI注入)完成业务逻辑,封装到Model中返回给相应视图
  • 完成视图设计
  • 部署到服务器上调试
原创粉丝点击