什么是Spring框架?Spring有什么优势?Spring核心模块有哪些?

news2025/1/16 17:47:42

 简介

 Spring 是一个以 IoC 和 AOP 为基础的Java EE轻量级开源框架,其目的是用于简化 Java 企业级应用的开发难度和开发周期。

        广义上的 Spring 泛指Spring Framework 为核心的 Spring 技术栈。例如 Spring Framework、Spring MVC、SpringBoot、Spring Cloud、Spring Data、Spring Security 等,其中 Spring Framework 是其他子项目的基础。

        狭义的 Spring 特指 Spring Framework,通常我们将它称为 Spring 框架。Spring 框架是一个分层的、面向切面Java 应用程序的一站式轻量级解决方案,它是 Spring 技术栈的核心和基础,是为了解决企业级应用开发的复杂性而创建的。Spring框架最核心的模块是IoC(“控制反转”) AOP(“面向切面编程”),并且提供了丰富的基础模块功能:依赖注入(Dependency Injection),事务管理,数据访问,消息传递,以及其他各种应用程序层面的功能。
 

Spring优势

  1. 依赖注入(Dependency Injection,DI):Spring通过DI来管理应用程序中的组件和对象之间的关系。DI允许你将组件的依赖关系从代码中解耦,使应用程序更加灵活、可测试和可维护。

  2. 面向切面编程(Aspect-Oriented Programming,AOP):Spring支持AOP,允许你将横切关注点(cross-cutting concerns)(如日志记录、事务管理)从应用程序的核心逻辑中分离出来,以提高代码的模块化性。

  3. 声明式事务的⽀持:Spring提供了强大的事务管理支持,允许你在应用程序中声明式地管理数据库事务,通过使用配置文件或者注解@Transactional 可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务的管理,提高开发效率和质量,确保数据一致性和可靠性。

  4. 数据访问与集成:Spring简化了与各种数据存储和集成技术(如JDBC、JPA、Hibernate、JMS等)的交互,使数据访问更加便捷,更方便使用各种优秀框架。

  5. 模块化:Spring应用程序可以被分成多个模块,每个模块可以独立开发、测试和部署,然后组合在一起形成一个完整的应用程序。

  6. IoC容器:Spring框架提供了一个IoC(Inversion of Control)容器,用于管理和组装应用程序中的组件。这个容器负责创建、配置和管理对象的生命周期。

  7. 框架整合:Spring可以轻松集成其他框架和技术,如Spring Boot、Spring Security、Spring Cloud等,以满足不同应用程序的需求。

  8. 测试支持:Spring提供了广泛的测试支持,包括单元测试和集成测试,可以用非容器依赖的编程方式进行几乎所有的测试工作,使开发人员能够更容易地编写可测试的代码。

  9. 降低 JavaEE API 的使⽤难度:Spring 对 JavaEE API (如 JDBC 、 JavaMail 、远程调⽤等)进⾏了薄薄的封装层,使这些 API的使用难度大为降低。

  10. 源码是经典的 Java 学习范例:Spring 的源代码设计精妙、结构清晰、匠心独⽤,处处体现着大师对 Java 设计模式灵活运⽤以及对Java 技术的⾼深造诣。它的源代码⽆意是 Java 技术的最佳实践的范例。

Spring核心模块

Spring框架由大约20个模块组成,这些模块分为Test、Core Container(核心容器)、Data Access/Integration(数据访问/集成)、Web、AOP/Aspect(应⽤对象解耦)、Instrumentation和Messaging(检测消息),如下图所示:

Spring框架的所有模块可以满足一切企业级应用开发的需求,在开发过程中可以根据需求有选择性地使用所需要的模块。

1、Spring Core(核心容器):spring core提供了IOC,DI,Bean配置装载创建的核心实现。

spring-core :IOC和DI的基本实现
spring-beans:BeanFactory和Bean的装配管理(BeanFactory)
spring-context:Spring context上下文,即IOC容器(AppliactionContext)
spring-expression:spring表达式语言
②Spring AOP:对⾯向切⾯编程提供了丰富的⽀持。这个模块是Spring应 ⽤系统中开发切⾯的基础,与DI⼀样,AOP可以帮助应⽤对象解耦。

spring-aop:面向切面编程的应用模块,整合ASM,CGLib,JDK Proxy
spring-aspects:集成AspectJ(AOP应用框架)
spring-instrument:动态Class Loading模块
③Spring Data Access

spring-jdbc:spring对JDBC的封装,用于简化jdbc操作
spring-orm:java对象与数据库数据的映射框架
spring-oxm:对象与xml文件的映射框架
spring-jms: Spring对Java Message Service(java消息服务)的封装,用于服务之间相互通信
spring-tx:spring jdbc事务管理
④Spring Web

spring-web:最基础的web支持,建立于spring-context之上,通过servlet或listener来初始化IOC容器
spring-webmvc:实现web mvc
spring-websocket:与前端的全双工通信协议
spring-webflux:Spring 5.0提供的,用于取代传统java servlet,非阻塞式Reactive Web框架,异步,非阻塞,事件驱动的服务
⑤Spring Message

Spring-messaging:spring 4.0提供的,为Spring集成一些基础的报文传送服务
⑥Spring test

spring-test:集成测试支持,主要是对junit的封装
转载自:Spring框架介绍_spring是什么框架_leiyufei的博客-CSDN博客

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

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

相关文章

Unity编辑器扩展:提高效率与创造力的关键

Unity编辑器扩展:提高效率与创造力的关键 前言 一、理解Unity编辑器二、扩展Unity编辑器的意义三、扩展Unity编辑器的必要性四、Unity编辑器的扩展方式五、扩展Unity编辑器的步骤六、Unity编辑器扩展的应用案例七、总结 前言 Unity是一款广泛使用的游戏开发引擎&am…

管理三个层级,你是哪一层管理者?

大家好,我是老原。 “什么算是一个好的项目经理?” “我不知道自己现在的水平怎么样,有没有判断标准?” 其实这些问题的本质是:我想提升,该朝着哪个方向去努力? 很多人会说,能力…

Vinted、PoshMark、Carousell这些海外二手跨境电商平台如何运营?

相信大家都知道“闲鱼”,二手交易平台一般来说入驻成本低,运营操作简单,平台流量多,因此也非常适合小型卖家入驻。那么海外的“闲鱼”有哪些呢?如何运营? 小编为大家找到了国外热门这些平台,有…

【芯片设计封装与测试】芯片测试目的、方法、分类及案例

目录 1.芯片测试概述(目的、方法) 1.1.测试在芯片产业价值链上的位置 2.测试如何体现在设计的过程中 2.1.半导体测试定义与基本工作机制 2.2.半导体测试环节分类及对应设备 2.3.设计验证 3.测试的各种类型 3.1.抽样测试和生产全测 3.2.测试相关…

有什么react进阶的项目推荐的?

前言 整理了一些react相关的项目,可以选择自己需要的练习,希望对你有帮助~ 1.ant-design Star:87.1k 阿里开源的react项目,作为一个UI库,省去重复造轮子的时间 仓库地址:https://github.com/ant-design/…

PMP证书的正确打开方式 get✓

在职场竞争日益激烈的今天,拥有一项专业认证成为了许多人提升自身竞争力的必备条件。而作为项目管理领域的顶级认证,PMP证书备受关注。不过,很多人对于PMP证书的费用颇有顾虑。那么,PMP证书有什么补贴政策呢?下面就为大…

电脑重装+提升网速

https://www.douyin.com/user/self?modal_id7147216653720341767&showTabfavorite_collectionhttps://www.douyin.com/user/self?modal_id7147216653720341767&showTabfavorite_collection 零封有哈数的主页 - 抖音 (douyin.com)https://www.douyin.com/user/self?…

21. 合并两个有序链表(简单系列)

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4] 示例 2: 输入:l1 [], l2 [] 输出:[] 示例 3: …

牛客python练习2

1 解析:赋值操作(aXX,ba),a,b指向同一内存空间。当a,b是不可变类型时,a变,a 值变,id变,但是b不变,b的id也不变;当a,b是可变类型时,a变…

中国AIGC产业全景图;设计+AIGC的工业化生产实践;大模型技术应用创新大赛;LangChain+向量数据库的LLM产品应用课程 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 艾瑞咨询8月最新报告,看透2023年中国AIGC产业全景 ShowMeAI知识星球资源编码:R178 艾瑞咨询在8月份最新发布了…

《合成孔径雷达成像算法与实现》Figure3.13——匹配滤波器的三种实现方式

clc clear close all% 参数设置 TBP 80; % 时间带宽积 T 10e-6; % 脉冲持续时间 N_ZD 60; % 零频点位于中点右侧的距离,P58% 参数计算 B TBP/T; …

windows Etcd的安装与使用

一、简介 etcd是一个分布式一致性键值存储,其主要用于分布式系统的共享配置和服务发现。 etcd由Go语言编写 二、下载并安装 1.下载地址: https://github.com/coreos/etcd/releases 解压后的目录如下:其中etcd.exe是服务端,e…

threejs纹理加载三(视频加载)

threejs中除了能把图片作为纹理进行几何体贴图以外,还可以把视频作为纹理进行贴图设置。纹理的类型有很多,我们可以用不同的加载器来加载,而对于视频作为纹理,我们需要用到今天的主角:VideoTexture。我们先看效果&…

安全工程师(安全产品售后)岗位需求-徐庆臣(黑客洗白者)

职位描述 负责网络安全项目中的产品调试和交付; 负责网络安全项目中的技术方案编写; 负责客户的安全应急和售后驻场。 职位要求 具备扎实的计算机与网络原理; 熟悉各类网络与安全设备(路由、交换、防火墙、VPN、漏洞扫描&#…

玩转科技|了解AI平台桌面客户端—ChatBox

目录 前言 特性 ​编辑 为什么需要 ChatBox? ChatGPT Plus 平替? 下载 支持系统 功能图 使用教程 ​感受 展示 前言 今天小编又来了,推荐给大家一款开源的OpenAI API桌面客户端ChatBox,它支持 Windows、Mac 和 Linux。…

数据库导出工具

之前根据数据库升级需求,需要导出旧版本数据(sqlserver 6.5),利用c# winfrom写了一个小工具,导出数据。 →→→→→多了不说,少了不唠。进入正题→→→→ 连接数据库:输入数据库信息 连接成功…

渗透测试漏洞原理之---【SQL注入】

文章目录 1、SQL注入原理1.1、SQL注入原理1.2、SQL注入危害1.3、SQL注入分类1.4、SQL注入漏洞挖掘1.4.1、注入点判断1.4.2、主要关注的问题1.4.3、sql-lib靶场第一关注入点 1.5、知识补充 2、SQL注入基本手法2.1、联合查询判断注入类型判断列数判断显示位数据库中的敏感信息获取…

木马病毒分析

一、病毒简介 这款木马从恶意网址下载东西,然后修改本地文件; SHA256:4354970ccc7cd6bb16318f132c34f6a1b3d5c2ea7ff53e1c9271905527f2db07 MD5:56b2c3810dba2e939a8bb9fa36d3cf96 SHA1:99ee31cd4b0d6a4b62779da36e0eeecdd80589fc 二、行为分析 首…

Golang GORM 单表删除delete

删除只有一个操作,delete。也是先找到再去删除。 可以删除单条记录,也可以删除多条记录。 var s Studentdb.Debug().Delete(&s, "age ?", 100)fmt.Println(s)[15.878ms] [rows:1] DELETE FROM student WHERE age 100var s Studentdb.De…

Unity中的Unistorm3.0天气系统笔记

Unistorm是Unity中的一个天气系统,它功能强大,效果优美。本文所述UniStorm为3.0版本,仅用于学习之用。 一、如何设置【白天】、【黑夜】和【天气类型】? 在Running模式下,按下Esc按键,会【弹出】或者【隐…