第一章节 spring 概念与体系结构

news2025/6/17 10:46:53

1、Spring 概念

Spring 是 Java EE 编程领域的一款轻量级的开源框架,目标就是要简化 Java 企业级应用程序的开发难度和周期。

1.1、广义

Spring Framework、Spring MVC、SpringBoot、Spring Cloud、Spring Data、Spring Security

项目名称描述
Spring DataSpring提供的数据访问模块,对 JDBC 和 ORM 提供了很好的支持。通过它,开发人员可以使用一种相对统一的方式,来访问位于不同类型数据库中的数据。
Spring Batch一款专门针对企业级系统中的日常批处理任务的轻量级框架,能够帮助开发人员方便的开发出健壮、高效的批处理应用程序。
Spring Security前身为 Acegi,是 Spring 中较成熟的子模块之一。它是一款可以定制化的身份验证和访问控制框架。
Spring Mobile是对 Spring MVC 的扩展,用来简化移动端 Web 应用的开发。
Spring Boot是 Spring 团队提供的全新框架,它为 Spring 以及第三方库一些开箱即用的配置,可以简化 Spring 应用的搭建及开发过程。
Spring Cloud一款基于 Spring Boot 实现的微服务框架。它并不是某一门技术,而是一系列微服务解决方案或框架的有序集合。它将市面上成熟的、经过验证的微服务框架整合起来,并通过 Spring Boot 的思想进行再封装,屏蔽调其中复杂的配置和实现原理,最终为开发人员提供了一套简单易懂、易部署和易维护的分布式系统开发工具包。

1.2、侠义

Spring Framework
Spring 有两个核心部分: IoC 和 AOP。

核心描述
IOCInverse of Control 的简写,译为“控制反转”,指把创建对象过程交给 Spring 进行管理。
AOPAspect Oriented Programming 的简写,译为“面向切面编程”。AOP 用来封装多个类的公共行为,将那些与业务无关,却为业务模块所共同调用的逻辑封装起来,减少系统的重复代码,降低模块间的耦合度。另外,AOP 还解决一些系统层面上的问题,比如日志、事务、权限等。

1.3、三层架构

在实际开发中,服务器端应用程序通常采用三层体系架构,分别为表现层(web)、业务逻辑层(service)、持久层(dao)。
Spring 致力于 Java EE 应用各层的解决方案,对每一层都提供了技术支持。

  • 在表现层提供了对 Spring MVC框架的整合;
  • 在业务逻辑层提供了管理事务和记录日志的功能;
  • 在持久层还可以整合 MyBatis、Hibernate 和 JdbcTemplate 等技术,对数据库进行访问

2、Spring Framework 的特点

Spring 框架具有以下几个特点。

2.1、方便解耦,简化开发

Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护交给 Spring 管理。

2.2、方便集成各种优秀框架

Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如 Struts2、Hibernate、MyBatis 等)的直接支持。

2.3、降低 Java EE API 的使用难度

Spring 对 Java EE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等)都提供了封装,使这些 API 应用的难度大大降低。

2.4、方便程序的测试

Spring 支持 JUnit4,可以通过注解方便地测试 Spring 程序。

2.5、AOP 编程的支持

Spring 提供面向切面编程,可以方便地实现对程序进行权限拦截和运行监控等功能。

2.6、声明式事务的支持

只需要通过配置就可以完成对事务的管理,而无须手动编程。

3、spring framework

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/411952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一 注册中心

一 什么是注册中心 注册中心可以说是微服务架构中的“通讯录”,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。 当我想给张三打电…

Windows系统管理_windows server 2016 文件系统与权限

文件系统概述 文件系统是操作系统用于明确存储设备(磁盘、固态硬盘)上组织文件的方法。从系统角度来 看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和 检索的系统。可以将一个文件连续地…

基于多种算法实现鸢尾花聚类

基于多种聚类算法实现鸢尾花聚类 描述 聚类(Clustering)属于无监督学习的一种,聚类算法是根据数据的内在特征,将数据进行分组(即“内聚成类”),本任务我们通过实现鸢尾花聚类案例掌握Scikit-l…

Java阶段一Day20

Java阶段一Day20 文章目录Java阶段一Day20异常throwthrows检测异常和非检测异常常见的RuntimeException常见的catch中的方法(ExceptionAPI)自定义异常网络C/S 和 B/STCP 和 UDP三次握手四次挥⼿教师总结新单词异常处理throw关键字例throws关键字例throws…

python函数详解_INDEX函数

一. 函数的作用 函数就是将一段具有独立功能的代码块 整合到一个整体并命名,在需要的位置调用这个名称即可完成对应的需求。 函数在开发过程中,可以更高效的实现代码重用。 二. 函数的使用步骤 1. 定义函数 def 函数名(参数):代码1代码2...... 复制 …

一些算法知识整理

最近找工作,整理了一些算法知识,希望能帮助到同样在找工作的同学。 1、LR: 逻辑回归,用于分类问题,模型可以理解为 线性模型sigmoid函数:y11e−(wxb)y \frac{1}{1e^{-(wxb)}} y1e−(wxb)1​ 其优化目标是…

【Linux系统编程】10.open/close函数

目录 open 参数pathname 参数flags 主类 副类 参数mode 返回值 close 参数fp 测试代码 测试结果 错误处理函数 open 查看open函数 man 2 open 其中 #include <unistd.h> 包含 #include <sys/types.h> #include <sys/stat.h> 参数pathname 打开…

NodeRED学习(五)http websoket

HTTP定义响应内容&#xff1a; 注&#xff1a;可含请求参数 // msg.payload{ // "demo":"你好" // } msg.payload msg.req.query.content; return msg;支持浏览器请求测试&#xff1a;IP:1880/(URL) 组件验证请求&#xff1a; websocket消息: 工具参考…

Python学习笔记--循环语句 for 和 while

目前更新中.... &#xff08;一&#xff09; while循环的基本语法 1. 基本格式 while 条件&#xff1a; 条件满足时&#xff0c;做的事情1 条件满足时&#xff0c;做的事情2 …&#xff08;省略&#xff09;… 只要条件满足&#xff0c;会无限循环执行条件需要布尔类型结果…

excel表格的导入和导出(Java+element)

本项目是前端vue3&#xff0c;后端springboot开发 需求为&#xff1a;前端导入表格&#xff0c;后端处理表格存储数据&#xff0c;点击按钮可以导出表格。 上传效果&#xff1a;前端点击上传按钮&#xff0c;会跳出选择文件框&#xff0c;选择文件&#xff0c;点击上传。 导出效…

C语言CRC-16 IBM格式校验函数

C语言CRC-16 IBM格式校验函数 CRC-16校验产生2个字节长度的数据校验码&#xff0c;通过计算得到的校验码和获得的校验码比较&#xff0c;用于验证获得的数据的正确性。基本的CRC-16校验算法实现&#xff0c;参考&#xff1a; C语言标准CRC-16校验函数。 不同厂家通过对输入数…

鸿鹄工程项目管理系统源码 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

这家年销售额309亿的Tier 1,要谈一场千亿新生意

跨入2023年&#xff0c;智能汽车软件赛道更热闹了。 相较于传统汽车开发模式&#xff0c;软件属于分布式ECU工程开发的一部分&#xff0c;由一级供应商作为黑盒提供&#xff0c;软件开发成本等被认为是硬件系统成本的一部分&#xff0c;没有实现单独定价。 如今&#xff0c;“…

Redis 如何使用 RedisCluster 构建高可用集群架构?

文章目录Redis 如何使用 RedisCluster 构建高可用集群架构&#xff1f;什么是 Redis Cluster&#xff1f;哈希槽&#xff08;hash slot&#xff09;一致性保证&#xff08;consistency guarantees&#xff09;如何构建 Redis Cluster&#xff1f;配置环境构建 A&#xff0c;A1 …

int(1) 和 int(10)区别

有个表的要加个user_id字段&#xff0c;user_id字段可能很大&#xff0c; alter table xxx ADD user_id int(1)。 int(1)怕是不够用吧&#xff0c;接下来是一通解释。 我们知道在mysql中 int占4个字节&#xff0c;那么对于无符号的int&#xff0c;最大值是2^32-1 4294967295&a…

一文弄懂Python中的sort和sorted函数

1. 引言 Python中的 sort()和sorted()函数主要用于按升序或降序对数据进行排序。在本文中比较用于列表时&#xff0c;两个函数在编程和语法上的差异。 闲话少说&#xff0c;我们直接开始吧&#xff01; 2. Sort()函数基本用法 用于列表排序的sort函数的语法如下&#xff1a…

java equals和==的区别

目录一、equals1.前言2.重写equals方法二、三、equals和的区别一、equals 1.前言 **当用equals来比较两个引用数据类型时默认比较的是它们的地址值&#xff0c;比如创建两个成员变量完全相同对象A和对象B两个进行比较&#xff0c;比较的是两个对象的地址值是否相等&#xff0c…

从spring boot泄露到接管云服务器平台

0x1前言 在打野的时候意外发现了一个站点存在spring boot信息泄露&#xff0c;之前就有看到一些文章可以直接rce啥的&#xff0c;今天刚好试试。通过敏感信息发现存在accesskey泄露&#xff0c;就想直接通过解密&#xff0c;获取敏感信息&#xff0c;接管云平台。 首先说下这个…

Linux服务器如何清除dns缓存

Linux服务器如何清除dns缓存 DNS缓存是一个临时数据库&#xff0c;用于存储已解释的DNS查询信息。换句话说&#xff0c;每当你访问网站时&#xff0c;你的操作系统和网络浏览器都会保留域名和相应IP地址的记录。 这消除对远程DNS服务器重复查询&#xff0c;并允许你的操作系统…

【实验报告】实验三、图像复原

1. 实验目的 (1) 理解退化模型。 (2) 掌握常用的图像复原方法。 2. 实验内容 (1) 模拟噪声的行为和影响的能力是图像复原的核心。 (2) 空域滤波 实验一 1. 1 产生至少 2 种不同类型的噪声&#xff0c;并绘制原图像、加噪后图像及对应直方图于 一个图形窗口中[subplot(m…