Spring 的整体架构和环境搭建(一)

1.整体架构

Spring是一个分层架构,它包含一些列的功能要素,并被分为大约20个模块,如图:

Spring架构图
这几个模块主要总结为如下几个部分:

① Core Containe

Core Container (核心容器)包含有Beans、Core、ContextExpression Language。Core和Beans是框架的基础模块,控制IOC(控制反转)和DI(依赖注入)。

  • Core模块主要包含Spring框架基本的核心工具类,Spring其他组件都需要依赖这个包里面的类,Core模块是其他组件的基本核心。
  • Beans模块是所有应用都需要用到的,它包括访问配置文件,创建和管理Bean以及进行IOC/DI操作相关的所有类。
  • Context模块构建于Core和Beans模块基础之上,提供了类似于JNDI注册器的框架式的对象访问方法。Context集成了Beans的特特性,为Spring核心提供的大量的拓展,添加了国际化,事件传播,资源加载,对Context的透明创建的支持。Context同事也支持J2EE的一些特性,例如EJB、JMX和基础的远程处理。ApplicationContext接口是Context模块的关键。
  • Experssion Language提供了请打的表达式语言,用于在运行时查询和操纵对象。它是JSP2规范中定义的unifed expression language的扩展,该语言支持设置/获取对象的属性值,属性的分配,方法的调用,访问数字上线文、容器和索引器、逻辑和算数运算符、命名变量以及从Spring的IOC容器中根据名称检索对象。它也支持list投影、选择和一般的list聚合。

② Data Access/Integration
Data Access/Integration 层包含JDBC、ORM、OXM、JMSTransaction模块。

  • JDBC模块提供了JDBC抽象层,消除了冗长的JDBC编码和解析数据库厂商特有的错误代码。
  • ORM 流行的对象-关系映射API。如: JPAJDOHibernateiBatis等,提供了一个交互层。
  • OXM 提供了一个对 Object/XML 映射事项的抽象层。
  • JMS 封装了消息的发送和接收。
  • Transaction 支持编程式和声明式事物管理。

③ Web

Web上下文模块建立在应用程序上下文模块之上,为基于Web应用程序提供了上下文,所以,Spring框架支持与Jakarta Struts的集成。Web模块还简化了处理大部分请求以及将请求参数绑定到域对象的工作。Web模块主要包含WebWeb-ServletWeb-StrutsWeb-Porlet模块。

  • Web模块:提供了基础的面向Web的集成特性。例如:文件上传、使用servlet listeners初始化IOV容器以及一个面向Web的应用上下文。
  • Web-Servlet 主要封装了Spring MVC的一些特性。
  • Web-Struts 封装了对Struts的支持,该支持在Spring3.0已被弃用。
  • Web-Porlet 提供了Porlet环境和Web-Servlet模块的MVC的实现。

④ AOP

提供了面向切面变成的实现,适用方可以定义方法拦截器和切点,从而将逻辑和代码分开达到解耦的目的。

⑤ Test

Test模块支持使用JUnit和TestNg对Spring进行测试。

2.环境搭建

① 源码拉取:
https://github.com/spring-projects/spring-framework

② IDEA导入

③ cglib 和 obienesis 的编译错误解决

问题原因:为了避免第三方class的冲突,Spring把最新的cglib和obienesis给重新打包了,它并没与在源码里提供这部分代码,而是直接将其放在jar包当中,这就导致了我们拉取代码导入后,出现编译错误。

打开IDEA右侧的Gradle,选择spring-core,在other下执行cglibRepackJar和objenesisRepackJar即可自动引入缺失的两个依赖。

cglib 和 obienesis 的编译错误解决
后续的代码分析我们将基于5.2.5.Release版本进行分析和研读。
在这里插入图片描述

发布了41 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Yunwei_Zheng/article/details/104039806
今日推荐