当前位置: 首页 > news >正文

SpringFramework实战指南(一)

SpringFramework实战指南(一)

    • 一、技术体系结构
      • 1.1 总体技术体系
      • 1.2 框架概念和理解

一、技术体系结构

1.1 总体技术体系

  • 单一架构

    一个项目,一个工程,导出为一个war包,在一个Tomcat上运行。也叫all in one。
    在这里插入图片描述

    单一架构,项目主要应用技术框架为:Spring , SpringMVC , Mybatis
    - 分布式架构

    一个项目(对应 IDEA 中的一个 project),拆分成很多个模块,每个模块是一个 IDEA 中的一个 module。每一个工程都是运行在自己的 Tomcat 上。模块之间可以互相调用。每一个模块内部可以看成是一个单一架构的应用。

    在这里插入图片描述

    分布式架构,项目主要应用技术框架:SpringBoot (SSM), SpringCloud , 中间件等。


1.2 框架概念和理解

框架( Framework )是一个集成了基本结构、规范、设计模式、编程语言和程序库等基础组件的软件系统,它可以用来构建更高级别的应用程序。框架的设计和实现旨在解决特定领域中的常见问题,帮助开发人员更高效、更稳定地实现软件开发目标。

在这里插入图片描述

框架的优点包括以下几点:

  1. 提高开发效率:框架提供了许多预先设计好了的组件和工具,能够帮助开发人员快速进行开发。相较于传统手写代码,在框架提供的规范化环境中,开发者可以更快地实现项目的各种要求。
  2. 降低开发成本:框架的提供标准化的编程语言、数据操作等代码片段,避免了重复开发的问题,降低了开发成本,提供深度优化的系统,降低了维护成本,增强了系统的可靠性。
  3. 提高应用程序的稳定性:框架通常经过了很长时间的开发和测试,其中的许多组件、代码片段和设计模式都得到了验证。重复利用这些组件有助于减少bug的出现,从而提高了应用程序的稳定性。
  4. 提供标准化的解决方案:框架通常是针对某个特定领域的,通过提供标准化的解决方案,可以为开发人员提供一种共同的语言和思想基础,有助于更好地沟通和协作。

框架的缺点包括以下几个方面:

  1. 学习成本高:框架通常具有特定的语言和编程范式。对于开发人员而言,需要花费时间学习其背后的架构、模式和逻辑,这对于新手而言可能会耗费较长时间。
  2. 可能存在局限性:虽然框架提高了开发效率并可以帮助开发人员解决常见问题,但是在某些情况下,特定的应用需求可能超出框架的范围,从而导致应用程序无法满足要求。开发人员可能需要更多的控制权和自由度,同时需要在框架和应用程序之间进行权衡取舍。
  3. 版本变更和兼容性问题:框架的版本发布和迭代通常会导致代码库的大规模变更,进而导致应用程序出现兼容性问题和漏洞。当框架变更时,需要考虑框架是否向下兼容,以及如何进行适当的测试、迁移和升级。
  4. 架构风险:框架涉及到很多抽象和概念,如果开发者没有足够的理解和掌握其架构,可能会导致系统出现设计和架构缺陷,从而影响系统的健康性和安全性。

站在文件结构的角度理解框架,可以将框架总结:框架 = jar包+配置文件

在这里插入图片描述

莎士比亚说,“一千个观众眼中有一千个哈姆雷特” 即仁者见仁,智者见智.说每个人都会对作品有不同的理解,每个人对待任何事物都有自己的看法,同样的技术解决同样的问题会产生不同流程和风格的解决方案,而采用一种框架其实就是限制用户必须使用其规定的方案来实现,可以降低程序员之间沟通以及日后维护的成本!

常用的单一架构JavaEE项目框架演进,从SSH、SSH2过渡到了SSM:SpringMVC、Spring、MyBatis。

总之,框架已经对基础的代码进行了封装并提供相应的API,开发者在使用框架是直接调用封装好的API可以省去很多代码编写,从而提高工作效率和开发速度。


相关文章:

  • day3-4 three.js学习笔记
  • 127.(leaflet篇)leaflet采集圆(移动端自己实现)
  • python使用单例模式加载config.ini配置文件
  • 虚幻引擎nDisplay教程:如何同步nDisplay节点与Switchboard + Helix Core
  • vue中鼠标拖动触发滚动条的移动
  • OpenCV——图像按位运算
  • 深入探讨:开发连锁餐饮APP的关键技术要点
  • 信息安全面试攻略
  • 从事铁路工作保护足部,穿什么劳保鞋更安全
  • 操作系统(复习提纲)
  • brpc之InputMessenger
  • groovy XmlParser 递归遍历 xml 文件,修改并保存
  • 计算机网络系统结构-2020期末考试解析
  • k8s的存储卷
  • 【模型评估 02】ROC曲线
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 0基础学习移动端适配
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • JAVA SE 6 GC调优笔记
  • java8 Stream Pipelines 浅析
  • jquery cookie
  • js中的正则表达式入门
  • Spring Boot MyBatis配置多种数据库
  • Xmanager 远程桌面 CentOS 7
  • 工程优化暨babel升级小记
  • 官方解决所有 npm 全局安装权限问题
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 每个JavaScript开发人员应阅读的书【1】 - JavaScript: The Good Parts
  • 前端路由实现-history
  • 使用 @font-face
  • 微信支付JSAPI,实测!终极方案
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • %@ page import=%的用法
  • (4) PIVOT 和 UPIVOT 的使用
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (rabbitmq的高级特性)消息可靠性
  • (多级缓存)缓存同步
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (淘宝无限适配)手机端rem布局详解(转载非原创)
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)fock函数详解
  • (转)树状数组
  • (转)项目管理杂谈-我所期望的新人
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net core使用ef 6
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET程序员迈向卓越的必由之路
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .NET中winform传递参数至Url并获得返回值或文件
  • .NET中两种OCR方式对比