企业级应用开发--解耦

企业级应用开发

(一)系统架构

       前后端分离目的: 解耦

       前端VUE   后端SpringBoot  --->基于SpringCloud微服务架构体系

  注:

  • 前后端分离必然存在跨域问题,参考同源策略(协议+域名/IP地址+端口)

(二)开发工具

   1. idea及插件:提升开发效率

   2.tomcat/jboss:轻量级应用服务器

   3.maven:第三方jar包统一管理(pom.xml  nexus私服)

   4.Gitlab: 代码管理工具(与svn本质的区别:本地仓库)

   5.中间件技术:消息队列(MQ、kafka)、分布式缓存(redis)、分布式存储(fastdfs)

   6. 数据库(MySQL、ORACLE)  sql优化

   7.postman:接口测试工具。

   8.单元测试

   。。。。

(三)分层思想

MVC分层思想: 解耦

Controller

  1. 接受页面请求参数,进行参数校验(hibernate-validation),校验失败,直接返回(避免使用方法的入参request、response等http对象)
  2. 调用service业务逻辑
  3. 返回json字符串(前后端分离的流行必然导致服务器端页面技术的淘汰,如:jsp、ext等)

注:Controller层中不允许编写业务逻辑代码

 

Service

  1. 依赖注入N个DAO层对象,尽量不要出现依赖注入service对象
  2. 依赖注入Manager成对象
  3. 处理核心业务逻辑
  4. 事务处理

注:

  • 此处指的是本地事务(非分布式事务),底层采用aop机制,使用动态代理设计模式
  • 一个写操作,不需要加事务,减少性能损耗
  • 单纯的一个查询或多个查询(查询操作不会引发事务问题),不需要加事务,避免性能损耗
  • 多个写操作,必须加事务,需要进行数据回滚
  • 根据实际业务情况,分析业务场景,灵活应用@transactional注解(即加在类上,还是加在方法上,还是不需要加)

        5. 调用持久层

注:

  • 出现异常,如果有事务就自动回滚并记录日志。
  • 日志细分为:warn级别或error级别
  • 例如:执行写操作前需要查询一个数据作为后续操作的参数,如用户需要配置角色
  • 如果角色为空,不执行后续业务代码,throw new ServiceException(“用户没有配置角色!”),记录warn级别日志

出现系统异常,不执行后续业务代码throw new ServiceException(e.getMessage(), e),记录error级别日志

Manage

  1. 操作中间件,如:缓存、分布式存储、消息队列等
  2. 调用第三方系统

注:

  • 出现异常,记录日志(error级别),往上层抛出

Mapper

  1. 数据库增删改查

注:出现异常往上层抛出

(四)开发思路

增删改查开发思路:

  1. 自下而上开发,mapper->service->controller 

微服务开发思路:

  1. pom.xml:加入各类starter,如:spring-boot-starter-web
  2. appliction.yml:不要使用application.properties,相较于appliction.yml代码可读性较差
  3. 启动类XxxApplication(@SpringBootApplication 自动配置、自动扫描、监控)
  4. 业务代码(mapper->service->controller)

(五)代码重构

功能完成只是项目开发的第一步,借助重构的手法,对已实现的代码进行优化

注:

  • 重构:在不改变现有功能的前提下对代码进行优化,以提升代码质量

(六)工程结构

 

posted @ 2020-04-21 15:12  qianbing12300  阅读(377)  评论(0编辑  收藏  举报