6.1Java EE——Spring介绍

news2024/11/29 12:43:26

一、Spring概述

 

String框架的核心技术

        Spring是由Rod Johnson组织和开发的一个分层的Java SE/EE一站式(full-stack)轻量级开源框架。它最为核心的理念是IoC(控制反转)和AOP(面向切面编程),其中,IoC是Spring的基础,它支撑着Spring对JavaBean的管理功能;AOP是Spring 的重要特性,AOP是通过预编译方式和运行期间动态代理实现程序功能,也就是说可以在不修改源代码的情况下,给程序统一添加功能。

String在表现层、业务逻辑层和持久层的作用

(1)在表现层它提供了Spring MVC框架,并且Spring还可以与Struts框架整合。

(2)在业务逻辑层可以管理事务、记录日志等。

(3)在持久层可以整合MyBatis、Hibernate、JdbcTemplate等技术。

二、Spring框架的优点

String框架的作用

        Spring作为Java EE的一个全方位应用程序框架,为开发企业级应用提供了一个健壮、高效的解决方案。它不仅可以应用于Java应用的开发,也可以应用于服务器端开发。Spring之所以得到如此广泛应用,是因为Spring框架具有以下几个优点。

String框架的优点:

a.非侵入式设计

        Spring是一种非侵入式(non-invasive)框架,所谓非侵入式是指Spring框架的API不会在业务逻辑上出现,也就是说业务逻辑应该是纯净的,不能出现与业务逻辑无关的代码。由于业务逻辑中没有Spring的API,所以业务逻辑代码也可以从Spring框架快速地移植到其他框架。

b.降低耦合性

        Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理,大大降低了组件之间的耦合性。

c.支持AOP编程

        Spring提供了对AOP的支持,AOP可以将一些通用的任务进行集中处理,如安全、事务和日志等,以减少通过传统OOP方法带来的代码冗余和繁杂。

d.支持声明式事务

        在Spring中,可以直接通过Spring配置文件管理数据库事务,省去了手动编程的繁琐,提高了开发效率。

e.方便程序的测试

        Spring提供了对Junit的支持,开发人员可以通过Junit进行单元测试。

f.方便集成框架

        Spring提供了一个广阔的基础平台,其内部提供了对各种框架的直接支持,如Struts、Hibernate、MyBatis、Quartz等,这些优秀框架可以与Spring无缝集成。

g.降低Java EE API的使用难度

        Spring对Java EE开发中的一些API(如JDBC、JavaMail等)都进行了封装,大大降低了这些API的使用难度。

三、Spring的体系结构

Spring 的体系结构图

Spring 5框架组成模块

        Spring 框架主要有8大模块,每个大模块由多个或1个小模块组成,如Spring的核心容器模块(Core Container)是由Beans模块、Core模块、Context模块和SpEL模块组成。下面结合String 的体系结构图对Spring体系结构中的主要模块进行简单介绍。 

核心容器模块(Core Container)

        核心容器模块在Spring的功能体系中起着支撑性作用,是其他模块的基石。核心容器层主要由Beans模块、Core模块、Contex模块和SpEL模块组成。

核心容器模块各模块组成

        (1)Beans模块。它提供了BeanFactory类,是工厂模式的经典实现,Beans模块的主要作用是创建和管理Bean对象。

        (2)Core模块。它提供了Spring框架的基本组成部分,包括IoC和DI功能。

    (3)Context模块。它构建于Beans模块和Core模块的基础之上,它可以通过ApplicationContext接口提供上下文信息。

     (4)SpEL模块。它是Spring 3.0后新增的模块,提供了对SpEL表达式语言(Spring Expression Language)的支持,SpEL表达式语言是一个在程序运行时支持操作对象图的表达式语言。

b.数据访问及集成模块(Data Access/Integration)

        数据访问及集成模块用于访问和操作数据库中的数据,它主要包含JDBC模块、ORM模块、OXM模块、JMS模块和Transactions模块。

数据访问及集成模块各模块组成

        (1) JDBC模块。它提供了一个JDBC的抽象层,消除了冗长的JDBC编码并能够解析数据库供应商特有的错误代码。

        (2)ORM模块。它为主流的对象关系映射API提供了集成层,用于集成主流的对象关系映射框架。

        (3)OXM模块。它提供了对XML映射的抽象层的支持,如JAXB、Castor等。

        (4)JMS模块。它主要用于传递消息,包含消息的生产和消费。自4.1版本后,JMS模块支持与Spring-message模块的集成。

        (5)Transactions模块。它的主要功能是事务管理。

c.Web模块

Web模块的实现基于APPlicationContext基础之上,它提供了Web应用的各种工具类,包括了Web模块、Servlet模块、WebSocket模块和Portlet模块。

Web模块各模块组成

         (1) Web模块。它提供了针对Web开发的集成特性,如大部分文件上传功能等。此外,Web模块还包含一个HTTP客户端和Spring远程处理支持的Web相关部分。

        (2)Servlet模块。它提供了Spring的模型、视图、控制器以及Web应用程序的REST Web服务实现。

        (3)WebSocket模块。它是Spring 4.0以后新增的模块,它提供了WebSocket 和SockJS的实现,以及对STOMP的支持。

        (4)Portlet模块。它类似Servlet模块的功能,提供了Portlet环境下的MVC实现。

d.其他模块

   Spring框架的其他模块还有AOP模块、Aspects模块、Instrumentation模块以及Test模块。

其他模块各模块组成

        (1) AOP模块。它提供了对面向切面编程的支持,程序可以定义方法拦截器和切入点,将代码按照功能进行分离,以降低程序的耦合性。

        (2)Aspects模块。它提供了与AspectJ集成的支持。

        (3)Instrumentation模块。它提供了对类工具的支持,并且实现了类加载器,该模块可以在特定的应用服务器中使用。

        (4)Messaging模块。它是Spring 4.0以后新增的模块,它提供了对消息传递体系结构和协议的支持。

        (5)Test模块。它提供了对程序单元测试和集成测试的支持。

四、Spring 5的新特性

Spring 5与其他版本的比较

        Spring 5是Spring当前最新的版本,与历史版本对比,Spring 5对Spring核心框架进行了修订和更新,增加了很多新特性,如支持响应式编程等。

Spring 5新特性:

a.更新JDK基线

        因为Spring 5代码库运行于JDK 8之上,所以Spring 5对JDK的最低要求是JDK 8,这可以促进Spring的使用者积极运用Java 8新特性。

b.修订核心框架

        (1)基于JDK 8的反射增强,通过Spring 5提供的方法可以更加高效的对类或类的参数进行访问。

        (2)核心的Spring接口提供了基于JDK 8的默认方法构建的选择性声明。

        (3)用@Nullable和@NotNull注解来表明可为空的参数以及返回值,可以在编译时处理空值而不是在运行时抛出NullPointerExceptions异常。

c.更新核心容器

        Spring 5支持候选组件索引作为类路径扫描的替代方案。从索引读取实体类,会使加载组件索引开销更低,因此,Spring程序的启动时间将会缩减。

d.支持响应式编程

 响应式编程是另外一种编程风格,它专注于构建对事件做出响应的应用程序。Spring 5包含响应流和Reactor(ReactiveStream的Java实现),响应流和Reactor支撑了Spring自身的功能及相关API。

e.支持函数式Web框架

        Spring 5提供了一个函数式Web框架。该框架使用函数式编程风格来定义端点,它引入了两个基本组件: HandlerFunction和RouterFunction。HandlerFunction 表示处理接收到的请求并生成响应函数;RouterFunction替代了@RequestMapping注解,用于将接收到的请求转发到处理函数。

f.支持Kotlin

        Spring 5提供了对Kotlin语言的支持。Kotlin是一种支持函数式编程风格的面向对象语言,它运行在JVM之上,可以让代码更具有表现力、简洁性和可读性。有了对Kotlin的支持,开发人员可以进行深度的函数式Spring编程,这拓宽了Spring的应用领域。

g.提升测试功能

        Spring 5完全支持Junit 5 Jupiter,因此可以使用Junit 5编写测试代码。除此之外,Spring 5还提供了在Spring TestContext Framework中进行并行测试的扩展。针对响应式编程模型,Spring 5引入了支持Spring webFlux的WebTestClient集成测试。

Spring框架简单介绍

        Spring是一个独立的框架,它不需要依赖任何Web服务器或容器,既可以在独立的Java SE项目中使用,也可以在Java EE项目中使用。在使用Spring之前需要获取它的jar包,这些jar包可以在Spring官网下载。

下载Spring的相关jar包可按如下步骤进行。

        使用浏览器访问Spring的官方下载地址,访问org→springframework→spring路径,就可以看到Spring框架各个版本压缩包的下载链接,这里选择5.2.8.RELEASE版本,单击链接下载该文件。

在官网单击下面这个链接下载该文件。

spring-5.2.8.RELEASE-dist.zip

下载完成后,将文件解压得到一个名为spring-framework-5.2.8.RELEASE的文件夹。

 

Spring目录结构下文件夹介绍

 docs文件夹:

        该文件夹下存放Spring的相关文档,包括开发指南、API参考文档。

 libs文件夹:

        该文件夹下存放开发所需的jar包和源码。整个Spring框架由21个模块组成,libs目录下Spring为每个模块都提供了三个压缩包,因此,libs文件夹下一共有63个jar包。这63个jar包分为三类。

 schema文件夹:

        该文件夹下存放Spring各种配置文件的XML Schema文档。​​​​​​​

加载JAR包

  在使用Spring开发时,除了要使用自带的jar包外,Spring的核心容器还需要依赖commons.logging的jar包。该jar包可以通过commons的官方地址下载。下载完成后,会得到一个名为commons-logging-1.2-bin.zit的压缩包。将压缩包解压到自定义目录后,即可找到commons.logging对应jar包commons-logging-1.2.jar。

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

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

相关文章

声音合成与克隆——制作用于训练的声音数据集

前言 1.PaddleSpeech 是一个简单易用的all-in-one 的语音工具箱,支持语音处理的相关操作,如语音知别,语音合成,声纹识别,声音分类,语音翻译,语音唤醒等多个方向的应用开发。 这里只使用到语音…

C++之模板类重写基类构造函数(一百五十七)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

matlab[1,1]生成100个随机点

close all; clc; x linspace(0,1,200); y 0 rand(1,200); sz 25; c linspace(1,10,length(x)); scatter(x,y,sz,c,filled)

IO流学习07(Java)

序列化流(对象操作输出流): 可以把java中的对象写到本地文件中。 public objectoutputstream(outputstream out) 把基本流包装成高级流。 public final void writeobject(object obj) 把对象序列化(写出)到文…

如何在Docker和Kubernetes中使用代理IP?

Docker和Kubernetes是目前非常流行的容器化技术,这些技术被广泛用于开发、部署和管理应用程序。在某些情况下,需要使用代理IP来访问特定的网络资源。本文将介绍如何在Docker和Kubernetes中使用代理IP,并提供详细的举例说明。 一、在Docker中使…

如何增强农业防灾减灾能力,加强灾情监测与风险预估

近日,农业农村部会同各部门联合下发通知,要求各地坚持问题导向,分区分类指导,细化实化措施,千方百计夺取秋粮和全年粮食丰收。文件中提到要通过加强灾害风险预报预警和灾情监测调度、分区分类做好灾情防范应对来应对气…

ASEMI整流桥GBU808参数和应用

编辑-Z 整流桥GBU808是一种常见的电子元件,用于将交流电转换为直流电。它由四个二极管组成,可以全波整流。GBU808具有高电流和高电压的特点,适用于各种电源和电路应用。 GBU808的主要特点之一是其高电流能力。它可以承受高达8安培的电流&…

嵌入式开发之串口通讯

串口通信(Serial Communication), 是指外设和计算机间,通过数据信号线 、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低&…

springboot会员制医疗预约服务管理信息系统

针对会员制医疗预约服务行业的管理现状,本会员制医疗预约服务管理信息系统主要实现以下几个目标: 1.系统界面简洁,操作简便。 2.拥有精准,高效的查询功能。 3.使管理人员能够及时的获得精确的报表。 4.对数据…

docker入门(Linux环境下安装Docker,Docker构建镜像)

docker入门(利用docker部署web应用) 一:什么是Docker 1.1 官方解释 Docker is the world’s leading software containerization platform。 Docker公司开发,开源,托管在github跨平台, 支持Windows、Macos、Linux。 1.2 抽象解释 docker…

【状态设计优化DP】ABC307 E

E - Distinct Adjacent (atcoder.jp) 题意: 思路: 组合问题,考虑DP或组合数 组合数不好考虑,我们去考虑DP 因为是个环,我们把环拆成一条链,然后加一个N1,颜色和起点1相同,在这条…

天台玻璃折叠门可实现室内外空间的无缝连接

天玻璃折叠门是指安装在天台上的可折叠开合的玻璃门,可用于将室外空间与室内空间进行隔离或连接。设计天台玻璃折叠门时需要注意以下几点: 1. 结构稳固性:选择坚固、稳定的材料和结构设计,确保门体在风力和其他外力作用下不易摇晃…

如何规范的设计数据库表

前言对于后端开发同学来说,访问数据库,是代码中必不可少的一个环节。系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等。后端开发的日常工作,需要…

制作搭建宠物商城小程序,打造便捷的宠物购物体验

随着宠物市场的不断发展,宠物商城小程序成为了满足宠物爱好者需求的重要工具。在现代社会,宠物已经成为人们生活中不可或缺的一部分。作为宠物爱好者,我们对于宠物食品、用品、医疗保健品等需求日益增长。而宠物商城小程序则为我们提供了一个…

python_day5_file

open()打开函数: f open(name,mode,encoding) name:要打开的目标文件名 mode:访问模式:只读r、写入w、追加a 等 encoding:编码格式,常为UTF-8 f open("D:\Test.txt", "r", encoding"UTF-8") print(type(f))r…

Dbeaver 显示字段备注信息

一、全局设置显示字段描述

@所有人,酷雷曼年中答卷,请查收!

2023 酷雷曼VR年中答卷 顺势而行 携手共赢 七月既至,年过已半。 半年来, 我们持续以优质的产品研发、 专业的客户服务、 不断交付的技术方案, 将那些关于VR的美好向往, 变成真实可感的确定, 让每一种相信&am…

Vue+element实现el-table行内编辑并校验

el-table行内编辑情况情况概要:之前在开发过程中对于element数据的新增,修改,删除。一般直接结合el-form使用。也就是新增的时候点新增然后出来一个弹框,里面嵌套一个表单,然后保存就好了。这次项目中要求所有的新增&a…

如何学习编写安全的PHP代码? - 易智编译EaseEditing

学习编写安全的PHP代码是保证应用程序安全的重要一环。下面是几个建议来帮助你学习编写安全的PHP代码: 学习安全编程原则: 了解常见的安全漏洞类型,如跨站脚本攻击(XSS)、SQL注入、跨站请求伪造(CSRF&…

如何刷新对黑客的认识?

黑客一般有10种类型 1、白帽黑客 白帽黑客是指通过实施渗透测试,识别网络安全漏洞,为政府及组织工作并获得授权或认证的黑客。他们也确保保护免受恶意网络犯罪。他们在政府提供的规章制度下工作,这就是为什么他们被称为道德黑客或网络安全专…