02Spring框架的特点以及jar包下载

news/2024/11/29 4:33:47/

Spring框架

Spring简介

Spring是由Rod Johnson创建的一个实现了IoC思想的开源框架, Spring最初的出现是为了解决EJB臃肿的设计以及难以测试等问题

Spring是为了解决企业应用开发的复杂性而创建的,从简单性、可测试性和松耦合的角度而言任何Java应用都可以从Spring中受益

  • Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架
  • Spring为简化开发而生,如AOP可以让程序员只需关注核心业务的实现,尽可能的不再关注非业务逻辑代码(事务控制和安全日志等)

在Spring框架中它可以帮助我们new对象,并且它还可以将new出来的对象赋到属性上(给对象的属性赋值就是为了让对象之间产生关系)

  • 我不在程序中采用硬编码的方式来new对象了(对象的创建权利交出去了)
  • 我不在程序中采用硬编码的方式来维护对象的关系了,本质上就是给属性赋值(对象之间关系的管理权交出去了)
  • 容器知道每个组件(类)运行的时候需要哪一个组件,然后通过反射的形式将容器中准备好的组件对象注入到需要的组件中

在这里插入图片描述

Spring框架的特点

Spring是轻量的: 完整的Spring框架可在一个大小只有1MB多的JAR文件里发布并且Spring所需的处理开销也是微不足道的

  • Spring是非侵入式的即Spring框架的运行不需要其他任何框架的支撑(不需要使用别人的写好的类或者容器)

Spring通过一种称作控制反转IoC的技术促进了松耦合

  • 当应用了IoC思想一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象
  • JNDI的思想是对象从容器中查找依赖,IoC的思想是容器在对象初始化时不等对象请求就主动将依赖传递给它

Spring提供面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务例如审计(auditing)和事务(transaction)管理进行内聚性的开发

  • 应用对象只实现它们应该做的完成业务逻辑仅此而已,它们并不负责其它的系统级关注点例如日志或事务支持

Spring包含并管理组件(有功能的一些类)的配置和生命周期,在这个意义上它是一种容器可以自动的探查出哪些组件需要用到另一些组件

  • 某个组件(类)要使用Spring提供的更多(IOC、AOP)功能,必须加入到容器中指定每个bean如何被创建
  • 基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例以及它们是如何相互关联的
  • 传统的重量级的EJB容器经常是庞大与笨重的难以使用

Spring可以将简单的组件配置、组合成为复杂的应用 , 应用对象被声明式地组合是在一个XML文件里

  • Spring也提供了很多基础功能(事务管理、持久化框架集成等),将应用逻辑的开发留给了你

Spring5中的8大模块

Spring Core核心模块(框架的基础核心), 它提供了依赖注入特征来实现容器对Bean的管理,将应用配置和依赖从实际的应用代码中分离出来

  • Spring核心容器的主要组件是BeanFactory(底层是工厂模式)

Spring Context上下文模块扩展了BeanFactory,增加了对国际化(I18N)消息、事件传播、验证的支持是Spring成为框架的原因

  • 提供了许多企业服务,例如电子邮件、JNDI访问、EJB集成、远程以及时序调度(scheduling)服务
  • 提供了对模版框架例如Velocity和FreeMarker集成的支持

Spring AOP模块提供了对面向切面编程的丰富支持,为基于Spring的应用程序中的对象提供了事务管理服务

  • 通过使用 Spring AOP不用依赖组件,就可以将声明性事务管理集成到应用程序中,可以自定义拦截器、切点、日志等操作

Spring DAO简化JDBC的模块提供了一个JDBC的抽象层和异常层次结构,消除了烦琐的JDBC编码和数据库厂商特有的错误代码解析

Spring ORM模块为几种流行的ORM框架提供了集成方案,包括Hibernate、JDO和iBATIS SQL映射,这些都遵从Spring的通用事务和DAO异常层次结构

Spring Web MVC模块为构建Web应用提供了一个功能全面的MVC框架, 是专门为Servlet API和Servlet容器构建的

  • 虽然Spring可以很容易地与其它MVC框架如Struts集成,但它自己的SpringMVC框架使用IoC对控制逻辑和业务对象提供了完全的分离

Spring WebFlux模块(反应式堆栈Web框架Spring WebFlux是在 5.0 版的后期添加的)

  • Spring WebFlux是完全非阻塞的,支持反应式流(Reactive Stream)背压,并在Netty,Undertow和Servlet 3.1+容器等服务器上运行

Spring Web上下文模块为基于Web的应用程序提供了上下文,提供了Spring和其它Web框架的集成(比如Struts、WebWork)

  • 提供了一些面向服务支持,例如实现文件上传的multipart请求

在这里插入图片描述

Spring5版本手动下载

第一步: 打开Spring官网 , 选择Spring Framework(其他项目通过Spring Framework衍生的框架)

在这里插入图片描述

第二步: 点击小猫头像进入github

在这里插入图片描述

第三步: 找到如图位置依次点击超链接

在这里插入图片描述

在这里插入图片描述

第四步: 在springframework目录下找到spring目录,点开之后你会看到很多不同的版本

在这里插入图片描述

第五步: 选择对应的spring版本并点击对应的url进行跳转

在这里插入图片描述

第六步: 点击spring-5.3.9-dist.zip下载并将下载的zip包解压

在这里插入图片描述

Spring6版本Maven引入

如果你采用Maven的方式创建工程并且只是想用Spring的IoC功能,仅需要引入spring-context依赖即可

  • maven会帮你自动导入spring-context依赖的jar包(spring-core.jar 和 spring-beans.jar)
<!--Spring6的正式版发布之前,这个仓库地址是需要的-->
<repositories><repository><id>repository.spring.milestone</id><name>Spring Milestone Repository</name><url>https://repo.spring.io/milestone</url></repository>
</repositories><dependencies><!--spring context依赖:使用的是6.0.0-M2里程碑版--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.0-M2</version></dependency>
</dependencies>

Spring Framework的目录结构

在这里插入图片描述

docs:spring框架的API帮助文档

libs:spring框架的jar包,如果你采用maven的方式就不需要下载这些jar包,直接引入即可

  • spring-core-5.3.9.jar: 字节码(这个是支撑程序运行的jar包)
  • spring-core-5.3.9-javadoc.jar: 代码中的注释
  • spring-core-5.3.9-sources.jar: 源码

schema:spring框架的XML配置文件相关的约束文件如spring-aop.xsd文件夹

  • 约束Spring配置文件中能写什么标签以及标签中能写什么属性

Spring的jar文件

如果应用只需基本的IoC/DI支持,引入spring-core.jar及spring-beans.jar文件就可以了

JAR文件描述
spring-aop-5.3.9.jar这个jar 文件包含在应用中使用Spring 的AOP 特性时所需的类
spring-aspects-5.3.9.jar提供对AspectJ的支持,可以方便的将面向切面的功能集成进开发环境中
spring-beans-5.3.9.jar这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion ofControl/Dependency Injection(IoC/DI)操作相关的所有类
spring-context-5.3.9.jar这个jar文件为Spring核心提供了大量扩展,可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI 所需的全部类,instrumentation组件以及校验Validation 方面的相关类
spring-context-indexer-5.3.9.jar虽然类路径扫描非常快,但是Spring内部存在大量的类,添加此依赖可以通过在编译时创建候选对象的静态列表来提高大型应用程序的启动性能
spring-context-support-5.3.9.jar用来提供Spring上下文的一些扩展模块,例如实现邮件服务、视图解析、缓存、定时任务调度等
spring-core-5.3.9.jarSpring框架基本的核心工具类, Spring其它组件要都要使用到这个包里的类是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类
spring-expression-5.3.9.jarSpring表达式语言
spring-instrument-5.3.9.jarSpring3.0对服务器的代理接口
spring-jcl-5.3.9.jarSpring的日志模块,JCL全称为"Jakarta Commons Logging"也可称为"Apache Commons Logging"
spring-jdbc-5.3.9.jarSpring对JDBC的支持
spring-jms-5.3.9.jar这个jar包提供了对JMS 1.0.2/1.1的支持类,JMS是Java消息服务属于JavaEE规范之一
spring-messaging-5.3.9.jar为集成messaging api和消息协议提供支持
spring-orm-5.3.9.jarSpring集成ORM框架的支持,比如集成hibernate,mybatis等
spring-oxm-5.3.9.jar为主流O/X Mapping组件提供了统一层抽象和封装,OXM(Object Xml Mapping)实现对象和XML之间的相互转换
spring-r2dbc-5.3.9.jarReactive Relational Database Connectivity (关系型数据库的响应式连接)的缩写,这个jar文件是Spring对r2dbc的支持
spring-test-5.3.9.jar对Junit等测试框架的简单封装
spring-tx-5.3.9.jar为JDBC、Hibernate、JDO、JPA、Beans等提供的一致的声明式和编程式事务管理支持
spring-web-5.3.9.jarSpring集成MVC框架的支持,比如集成Struts等
spring-webflux-5.3.9.jarWebFlux是Spring5添加的用于web的开发新模块(功能和SpringMVC类似),Webflux是当前一种比较流程响应式编程出现的框架
spring-webmvc-5.3.9.jarSpringMVC框架的类库
spring-websocket-5.3.9.jarSpring集成WebSocket框架时使用

http://www.ppmy.cn/news/1112957.html

相关文章

RK3399平台开发系列讲解(入门篇)VIM的基础命令

🚀返回专栏总目录 文章目录 一、Vim 命令速查二、其他命令三、Vim模式沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍Vim相关命令。 一、Vim 命令速查 简单说明一下,这张图上展示了一个键盘。图中的“•”表示,单个字母不是完整的命令,必须再有进一步…

SSM - Springboot - MyBatis-Plus 全栈体系(七)

第二章 SpringFramework 四、SpringIoC 实践和应用 3. 基于 注解 方式管理 Bean 3.4 实验四&#xff1a;Bean 属性赋值&#xff1a;基本类型属性赋值&#xff08;DI&#xff09; Value 通常用于注入外部化属性 3.4.1 声明外部配置 application.properties catalog.nameM…

Vue的详细教程--入门

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Vue的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Vue是什么 二. Vue的特点及优势 三.使用…

UE5学习笔记(1)——从源码开始编译安装UE5

目录 0. 前期准备1. Git bash here2. 克隆官方源码。3. 选择安装分支4. 运行Setup.bat&#xff0c;下载依赖文件5. 运行GenerateProjectFiles.bat生成工程文件6. 生成完成&#xff0c;找到UE5.sln/UE4.sln7. 大功告成 0. 前期准备 0.1 在windows的话&#xff0c;建议装一个Git…

C# 查找迷宫路径

1.导入图像&#xff0c;并且将图像转灰度 using var img new Image<Bgr, byte>(_path); using var grayImg img.Convert<Gray, byte>(); 2.自动二值化图像 using var inputGrayOut new Image<Gray, byte>(grayImg.Size); // 计算OTSU阈值 var threshol…

汇编指令概述 ATT汇编基本语法

操作系统 南大 计算机体系结构 性能分析 建模 深入理解计算机系统CMU15213_课件 深入理解计算机系统-笔记-第一章-计算机系统漫游 uCore OS实验指导书和源码网址 (2017) How-to-Make-a-Computer-Operating-System 各章节代码 linux 系统编程 双系统安装 ucore实验中…

AMD 5600G + 华硕A520M 引起的 Windows与Linux双系统冲突问题

上两周用了十年的i3技嘉主板的台式电脑进系统花屏&#xff0c;无法使用。机器用了这么久&#xff0c;我也懒得研究是是什么问题导致的&#xff0c;直接在网上买了一堆新的配件进行组装&#xff0c;具体的配置如下&#xff1a; 金百达DDR4 银爵 16G 3200 DDR4 长鑫颗粒&#xff…

2023面试知识点一

1、新生代和老年代的比例 默认的&#xff0c;新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数 –XX:NewRatio 来指定 )&#xff0c;即&#xff1a;新生代 ( Young ) 1/3 的堆空间大小。老年代 ( Old ) 2/3 的堆空间大小。其中&#xff0c;新生代 ( …