zoukankan      html  css  js  c++  java
  • 企业级应用开发--解耦

    企业级应用开发

    (一)系统架构

           前后端分离目的: 解耦

           前端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)

    (五)代码重构

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

    注:

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

    (六)工程结构

  • 相关阅读:
    人工智能深度学习:TensorFlow2.0如何保持和读取模型?
    人工智能深度学习:TensorFlow2.0实现回归问题
    InnoDB存储引擎中的锁
    Spring源码系列8
    Spring源码系列7
    Spring源码系列6
    Spring源码系列5
    Spring源码系列4
    Spring源码系列3
    Spring源码系列2
  • 原文地址:https://www.cnblogs.com/qianbing/p/12744809.html
Copyright © 2011-2022 走看看