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

news2024/11/26 0:35:01

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.coloradmin.cn/o/1020245.html

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

相关文章

2023-驾驶舱数据指标体系建设

一、什么是领导驾驶舱&#xff1f; 领导驾驶舱&#xff0c;它以驾驶舱的形式&#xff0c;通过各种图表形象的展示企业运行的关键指标&#xff08;KPI&#xff09;&#xff0c;直观的监测企业运营情况&#xff0c;并可以对异常关键指标预警和挖掘分析。以根据管理和业务的需要&a…

期权合约到期日强平了还要扣手续费嘛?

国内目前的50ETF期权交易是会收取平仓的手续费的&#xff0c;期权手续费是双向收费&#xff0c;开仓收取一次、平仓收取一次。国内不同券商和期权分仓平台的手续费标准不同&#xff0c;下文介绍期权合约到期日强平了还要扣手续费嘛&#xff1f;本文来自&#xff1a;期权酱 一、…

EFLAGS寄存器与JCC指令

EFLAGS寄存器 EFLAGS寄存器有32位&#xff0c;EFLAGS 寄存器的标志位可以通过各种指令进行操作和判断&#xff0c;例如条件分支指令、算术指令和控制指令等。程序可以根据标志位的值来进行条件判断和控制流程&#xff0c;从而实现不同的逻辑和功能。 EFLAGS 寄存器的各个位和…

js写一个判断字符串是否能够转为JSON 的函数

其实非常简单 这里我们需要涉及到 捕获异常 因为如果你直接在if里面转 我已经试过了 直接就报错了 一点面子不给 我们写一个这样的函数 function isJsonString(str) {try {JSON.parse(str);return true;} catch (e) {return false;} }编写如下代码 console.log(isJsonString(…

Flutter的路由router-页面跳转

文章目录 概念介绍基本路由&#xff08;Basic Routing&#xff09;跳转到某个页面弹出页面 命名路由&#xff08;Named Routing&#xff09;第三方路由管理库&#xff08;Third-Party Routing Libraries&#xff09; Android原生的路由Intent-based Routing&#xff08;基于Int…

分析数组,结构体在反汇编中存储

本文会在IDA中分析数组&#xff0c;结构体在内存中的存储 目录 IDA分析数组存储 IDA分析结构体存储 传递参数的方式 IDA分析数组存储 测试代码如下&#xff1a; /************************************************************************/ /*Author : 玄都大…

《优化接口设计的思路》系列:第三篇—留下用户调用接口的痕迹

系列文章导航 《优化接口设计的思路》系列&#xff1a;第一篇—接口参数的一些弯弯绕绕 《优化接口设计的思路》系列&#xff1a;第二篇—接口用户上下文的设计与实现 《优化接口设计的思路》系列&#xff1a;第三篇—留下用户调用接口的痕迹 前言 大家好&#xff01;我是sum…

【TCP】延时应答 与 捎带应答

延时应答 与 捎带应答 一. 延迟应答&#xff08;效率机制&#xff09;二. 捎带应答&#xff08;效率机制&#xff09; 一. 延迟应答&#xff08;效率机制&#xff09; 延时应答&#xff1a;相当于 流量控制 的延伸。 流量控制是 踩下了刹车&#xff0c;是发送方发的不要太快&a…

墨天轮专访星环科技刘熙:“向量热”背后的冷思考,Hippo如何打造“先发”优势?

导读&#xff1a; 深耕技术研发数十载&#xff0c;坚持自主可控发展路。星环科技一路砥砺前行、坚持创新为先&#xff0c;建设了全面的产品矩阵&#xff0c;并于2022年作为首个独立基础软件产品公司成功上市。星环科技在今年的向星力•未来技术大会上发布了分布式向量数据库Tra…

ReactNative进阶(二十一)开源插件 react-native-device-info 获取设备信息

文章目录 一、前言二、Android 平台三、iOS 平台四、拓展阅读 一、前言 项目开发过程中&#xff0c;需要获取设备信息&#xff0c;例如获取设备名称。可通过使用开源的第三方组件react-native-device-info&#xff0c;该组件适用于iOS和Android双平台。 在ReactNative项目中可…

Comparator 接口使用方法,结合java8新特性及源码分析

目录 1 Comparator介绍1.1 函数式声明1.2 简单的小案例 2. Comparator中的方法2.1 compare 抽象方法例子 2.2 comparing方法源码参考解释详细解释 <? super T, ? extends U>讲解comparing代码样例例子comparing中的方法源码分析<T, U extends Comparable<? supe…

Python asynchat模块-异步套接字处理-服务器程序示例

介绍 此模块在asyncore架构上建立&#xff0c;简化了异步客户端和服务器&#xff0c;并且使得处理元素为任意字符串结束或者为变长度的协议更加容易。asynchat定义了一个可以由使用者来子类化的抽象类async_chat&#xff0c;提供了collect_incoming_data()和found_terminator(…

数据结构上机练习——单链表的基本操作、头文件、类定义、main函数、多种链表算法的实现,含注释

文章目录 单链表的基本操作实现1.头文件2.类定义和多种算法的实现2.1创建空表2.2头插法创建n个元素的线性链表2.3一个带头节点的链表存放一组整数&#xff0c;设计一个算法删除值等于x的所有节点。2.4计算线性表中值为偶数的节点个数2.5一个带头节点的单链表heada存放一组整数&…

科技云报道:云安全的新战场上,如何打破“云威胁”的阴霾?

科技云报道原创。 近年来&#xff0c;在云计算和网络安全产业的蓬勃发展下&#xff0c;我国云安全行业市场规模呈现高速增长态势&#xff0c;在网络安全市场总体规模中占比不断上升。 据统计&#xff0c;近5年我国云安全市场保持高速增长&#xff0c;2021年我国云安全市场规模…

VMware workstation 中centos7虚拟机在nat模式下怎么配置网卡,指定我想要的IP并且可以联网

1、首先打开我们的虚拟网络编辑器 2、查看我们的网关 3、查看IP池&#xff0c;根据需求自己设置 4、打开centos7虚拟机 编辑网卡配置 vim /etc/sysconfig/network-scripts/ifcfg-ens160####我的网卡是ens160TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic …

全新交友平台,探索在线交流的乐趣!

大家好&#xff01;今天给大家介绍一款全新的交友平台&#xff0c;让您轻松享受在线交流的乐趣&#xff01;这个平台以其丰富多样的功能和互动体验而广受欢迎。无论您是想结识新朋友还是找到心仪的主播&#xff0c;这里都能满足您的需求。 首先&#xff0c;我们来看一下首页列表…

基于SpringBoot的超市管理系统

基于SpringBootVue的超市管理系统、超市进销存系统&#xff0c;前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;管理员…

三、C#—变量,表达式,运算符(1)

&#x1f33b;&#x1f33b; 目录 一、变量1.1 变量1.2 使用变量的步骤1.3 变量的声明1.4 变量的命名规则1.5 变量的初始化1.6 变量初始化的三种方法1.7 变量的作用域1.8 变量使用实例1.9 变量常见错误 二、C#数据类型2.1 数据类型2.2 值类型2.2.1 值类型直接存储值2.2.2 简单类…

Vivado初体验LED工程

文章目录 前言一、PL 和 PS二、LED 硬件介绍三、创建 Vivado 工程四、创建 Verilog HDL 文件五、添加管脚约束六、添加时序约束七、生成 BIT 文件八、仿真测试九、下载测试 前言 本节我们要做的是熟练使用 Vivado 创建工程并实现对 LED 灯控制&#xff0c;每秒钟控制开发板上的…

微信小程序手写时间间隔组件,可设置间隔时间一分钟,半小时,一小时的间隔

纯手写时间间隔组件 需求&#xff1a;小程序中可以根据时间段进行选择开始时间和结束时间&#xff0c;如&#xff1a;当前时间是09&#xff1a;00&#xff0c; 则我可以从9点开始选择时间&#xff0c;每半个小时为间隔&#xff0c;那么下一个时间就算9&#xff1a;30&#xff…