本系统分析的 spring 源码版本为 4.3.8.
(一)整体架构
这些模块被分为以下几个部分
(1)Core Container
Core 容器(核心容器)包含 Core,Beans,Context 和 Expression Language 模块.
Core 模块(spring-core)主要包含 Spring 框架基本的核心工具类,Spring 其它组件都要使用到这个包里的类,Core 模块是其它组件的基本核心.好比演戏时需要使用到的道具.
Beans 模块(spring-beans)是所有应用到要使用到的 bean 类.它包含访问配置文件(如 spring-mvc.xml),创建和管理 bean,以及进行 Inversion of Control / Dependency Injection (IOC/DI)操作相关的所有类.好比演戏时的演员.
Context 模块(spring-context)构建与 Core 和 Beans 模块基础之上,提供了一种类似于 JNDI 注册器的框架式的对象访问方法.Context 模块继承了 Beans 的特性,为 spring 核心提供了大量扩展,添加了对国际化,事件传播,资源加载和对 context 的透明创建的支持.ApplicationContext 接口是 context 模块的关键.好比演戏时的场景.
Expression Language 模块(spring-expression)提供了一个强大的表达式语言用于运行时查询和操纵对象.该语言支持设置 / 获取属性的值,属性的分配,方法的调用,访问数组上下文,容器和索引器,逻辑和算术运算符,命名变量以及从 spring 的 IOC 容器中根据名称检索对象.它也支持 list 投影.选择和一般的 list 聚合.
(2)Data Access/Integration
JDBC 模块提供了一个 JDBC 抽象层,它可以消除冗长的 JDBC 编码和解析数据库厂商特有的错误代码,这个模块包含了 Spring 对 JDBC 数据访问进行封装的所有类
ORM 模块为流行的对象 - 关系映射 API,如 JPA,JDO,Hibernate,iBatis 等,提供了一个交互层,利用 ORM 封装包,可以混合使用所有 Spring 提供的特性进行 O/R 映射,如前边提到的简单声明性事务管理
Transaction 模块支持编程和声明性的事物管理,这些事物类必须实现特定的接口,并且对所有的 POJO 都适用.
(3)web
Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文,所以 Spring 框架支持与 Jakarta Struts 的集成.Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作.Web 层包含了 Web,Web-Servlet,Web-Struts 和 Web-Porlet 模块
Web 模块:提供了基础的面向 Web 的集成特性,例如,多文件上传,使用 Servlet listeners 初始化 IoC 容器以及一个面向 Web 的应用上下文,它还包含了 Spring 远程支持中 Web 的相关部分
Web-Servlet 模块 web.servlet.jar:该模块包含 Spring 的 model-view-controller(MVC) 实现,Spring 的 MVC 框架使得模型范围内的代码和 web forms 之间能够清楚地分离开来,并与 Spring 框架的其他特性基础在一起
Web-Struts 模块:该模块提供了对 Struts 的支持,使得类在 Spring 应用中能够与一个典型的 Struts Web 层集成在一起
Web-Porlet 模块:提供了用于 Portlet 环境和 Web-Servlet 模块的 MVC 的实现
(4)AOP
AOP 模块提供了一个符合 AOP 联盟标准的面向切面编程的实现,它让你可以定义例如方法拦截器和切点,从而将逻辑代码分开,降低它们之间的耦合性.利用 source-level 的元数据功能,还可以将各种行为信息合并到你的代码中
Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务,通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中
Aspects 模块提供了对 AspectJ 的集成支持.
Instrumentation 模块提供了 class instrumentation 支持和 classloader 实现,使得可以在特定的应用服务器上使用.
(5)Test
Test 模块支持使用 Junit 和 TestNG 对 Spring 组件进行测试.
(二)环境搭建
(1)从官网 https://projects.spring.io/spring-framework/ 点击那个小猫的图像,进入 github 下载相应版本的 spring 源码.
(2)检查 java 环境是否安装,执行源码目录下的 import-into-eclipse.bat 文件转换成 eclise 项目.
(3)导入 idea 中
(4)不同情况下会出现不同问题,本次导入正常.如果出现一些异常,请搜索解决方法.
来源: http://www.bubuko.com/infodetail-2477024.html