Spring框架之体系结构和目录结构

news/2024/11/8 2:50:13/

Spring是由Rob Jonson租住和开发的一个分层的JavaEE/SE一站式(full stack)轻量级开发框架,他的核心思想是控制翻转(Inversion of Control IOC)和面向切面(Aspect Oriented Programming, aop)的编程,其中IoC是Spring的基础,它支撑着Spring对Java Bean的管理功能;Aop是Spring的重要特性,AOP是通过预编译的方式和运行期间动态代理实现程序功能,即在不修改代码的情况下,为程序统一添加功能。
Spring贯穿于表现层、业务逻辑层和持久层:
在表现层提供了Spring MVC框架
在业务逻辑层可以管理事务、记录日志
在持久层可以整合MyBatis、Hibernate、JDBCTemplate等技术
Spring是模块化的,允许使用者只选择使用自己的模块, Spring 框架采用分层架构,根据不同的功能被划分成了21个模块,主要分成8大模块
在这里插入图片描述

1. 核心容器

Spring 的核心容器是其他模块建立的基础,在Spring的功能体系中起着支撑作用,是其它模块的基石。由 Beans 模块、Core 核心模块、Context 上下文模块和 SpEL 表达式语言模块组成,没有这些核心容器,也不可能有 AOP、Web 等上层的功能。具体介绍如下。

Beans 模块

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

Core 核心模块

封装了 Spring 框架的底层部分,包括资源访问、类型转换及一些常用工具类。提供了Spring框架的基本组成部分,包括Ioc和DI

Context 上下文模块

Context 建立在 Core 和 Beans 模块的基础之上,集成 Beans 模块功能并添加资源绑定、数据验证、国际化、Java EE 支持、容器生命周期、事件传播等。ApplicationContext 接口是上下文模块的焦点。

SpEL 模块

SpEL(Spring Expression Language) 模块是Spring 3.0后新增的模块,提供了强大的表达式语言支持,支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算,支持从 Spring 容器获取 Bean,它也支持列表投影、选择和一般的列表聚合等。

2. 数据访问集成(Data Access/Integration)

数据访问/集成层包括 JDBC,ORM,OXM,JMS 和Transactions 模块,它们的细节如下:

JDBC模块

JDBC-Java Data Base Connectivity模块提供了 一个JDBC的 抽象层,它消除了冗长的 JDBC 编码和对数据库供应商特定错误代码的解析。

ORM 模块

ORM-Object Relational Mapping模块提供了对流行的对象关系映射 API 的集成,包括 JPA、JDO 和 Hibernate 等。通过此模块可以让这些 ORM 框架和 spring的其它功能整合。

OXM 模块

OXM-Object XML Mapping模块提供了对 OXM 实现的支持,比如 JAXB、Castor、XML Beans、JiBX、XStream 等。

JMS 模块

JMS-Java Messaging Serivice模块包含生产(produce)和消费(consume)消息的功能。从 Spring 4.1 开始,集成了 spring-messaging 模块。

Transactions 模块

事务模块为实现特殊接口类及所有的 POJO 支持编程式和声明式事务管理。(注:编程式事务需要自己写 beginTransaction()、commit()、rollback() 等事务管理方法,声明式事务是通过注解或配置由 spring 自动处理,编程式事务粒度更细)

Web模块

Web模块的实现基于ApplicationContext,它提供了Web应用的各种工具类,包括 Web-Socket,Servlet,Web和 Portlet 组成,它们的细节如下:

Web-Socket 模块

Web-Socket 模块是Spring 4.0后新增的模块,它提供了 WebSocket和SockJS的实现,而且在 web 应用程序中提供了客户端和服务器端之间通信的两种方式。

Servlet 模块

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

Web模块

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

Portlet 模块

Portlet 模块的功能类似于Servlet模块,提供了用于 Portlet 环境的 MVC 实现,并反映了 spring-webmvc 模块的功能。

4、其他模块

还有其他一些重要的模块,像 AOP,Aspects,Instrumentation,Web 和测试模块,它们的细节如下:

AOP 模块

AOP 模块提供了面向方面(切面)的编程实现,允许你定义方法拦截器和切入点对代码进行干净地解耦,从而使实现功能的代码彻底的解耦出来。使用源码级的元数据,可以用类似于.Net属性的方式合并行为信息到代码中。

Aspects 模块

Aspects 模块提供了与 AspectJ 的集成,这是一个功能强大且成熟的面向切面编程(AOP)框架。
Instrumentation 模块I
Instrumentation 模块在一定的应用服务器中提供了类 instrumentation 的支持和类加载器的实现。
Messaging 模块
Messaging 模块为 STOMP 提供了支持作为在应用程序中 WebSocket 子协议的使用。它也支持一个注解编程模型,它是为了选路和处理来自 WebSocket 客户端的 STOMP 信息。

Test模块

测试模块支持对具有 JUnit 或 TestNG 框架的 Spring 组件的测试。
常用模块之间的依赖关系
在这里插入图片描述

spring的目录结构

https://repo.spring.io/ui/native/release/org/springframework/spring/
下载解压后由3个文件夹:docs、libs、schema

docs文件夹

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

libs文件夹

该文件夹下存放开发所需要的jar包和源码,整个spring框架由21模块组成,libs目录下spring为每个模块提供给了3个压缩包,因此,libs文件夹下共有63压缩包。这63个压缩包分为三类:
以RELEASE.jar结尾的JAR包是Spring框架的class文件
以RELEASE-javadoc.jar结尾的JAR包是Spring框架的API文档的压缩包
以RELEASE-source.jar结尾的JAR包是Spring框架的源码的压缩包

schema文件夹

该文件夹下存放spring各种配置文件的XML Schema文档

注意

在使用spring开发时,除了使用自带的jar保外,spring的核心容器还需要历来commons-logging的jar包。


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

相关文章

《NFT区块链进阶指南二》Etherscan验证Solidity智能合约(Remix插件验证)

文章目录 一、验证说明二、Etherscan Key三、验证插件四、源码认证4.1 Remix验证(推荐)4.1.1 无构造参数合约验证4.1.2 有构造参数合约验证 4.2 单文件验证(不推荐)4.3 Hardhat部署(按照需要) 五、验证结果…

Java的Proxy,一种思考和解决问题的方法

代理模式 静态代理功能列表(接口)原有功能,功能的实现在不破坏原功能的情况下EnhanceTest JDK 动态代理Cglib 代理模式Callback的MethodInterceptortest 静态代理 在不破坏原有功能的情况下,进行升级改造。 使用场景,…

Hyperledger Fabric理解

在Hyperledger Fabric中,Peer和Orderer是两个不同的角色,它们各自扮演不同的角色,但也需要相互协同合作来支持Fabric网络的顺畅运行。 Peer是Hyperledger Fabric网络中负责维护分类帐(Ledger)、安装链码(C…

已经有MySQL了,干嘛还要学MongoDB?

三分钟的时间,通过本文你将学会 1.MongoDB主要特征 2.MongoDB优缺点,扬长避短 3.何时选择MongoDB?为啥要用它? 4.MongoDB与MySQL关键字对比 5.下载与安装MongoDB 6.Java整合MongoDB,实现增删改查 MongoDB和MySQ…

Java设计模式七大原则-开放-关闭原则

✨作者:猫十二懿 ❤️‍🔥账号:CSDN 、掘金 、个人博客 、Github 🎉公众号:猫十二懿 开放-关闭原则 1、开闭原则介绍 在Java中的开放-关闭原则(Open-Closed Principle, OCP)是一个重要原则。该…

【业务功能篇01】Springboot+mybatis-plus+POI实现表单数据导出Excel

业务中常见的一个功能,前台附有多个筛选器,提供筛选过滤表单数据,然后点击导出按钮进行导出: 下面演示举例实例: 用户通过前端参数传参后,查询出一个表单数据,假设为表A,这个表A是一个问题单表,每个问题会对应有多个小问题单,比如ANo是该问题单号, 而subNo字段就是对…

设计模式 -第1部分 避免浪费- 第1章 Flyweight 模式 - 共享对象避免浪费

第1部分 避免浪费 注:其内容主要来自于【日】-结城浩 著《图解设计模式》20章节 极力推荐大家阅读原著 第1章 Flyweight 模式 - 共享对象避免浪费 1.1 Flyweight 模式 Flyweight 的意思"轻量级",其在英文中的原意指比赛中选手体重最轻等级的一…

正确甄别API、REST API、RESTful API和Web Service之间的异同

看到API你会想起什么?是接口、第三方调用、还是API文档?初看你可能会觉得这太熟悉了,这不是系统开发日常系列吗?但你仔细想一想,你会发现API的概念在你脑海里是如此的模糊。如何你通过搜索引擎检索API,你会…