系列文章目录
例如:第一章 Python 机器学习入门之pandas的使用文章目录
前言
在大学期间,我有接触过 Spring 框架,能深刻地感受到它的强大与魅力,但也仅限于面向应用开发,对它的底层实现原理全然不知,那么也就无法领悟到它的精髓(优秀的设计思想及编程理念)。当然,阅读源码的好处很多,像提高自己的阅读源码能力、学习优秀大师的设计理念、思想等。
在大学期间,老师经常提倡我们看源码,但阅读源码是一个艰涩与枯燥的过程,所以,基本没有人真的去看源码。如今,自己已经走上了开发的道路,为了以后能走得更高更远,有必要看看源码。至于为什么是 Spring 源码?因为它相对较难啊。难的都会,看其他相对简单地就容易多了。这里我看的书是《Spring 源码深度解析》第2版
1. Spring 简介
Spring 是于 2003 年兴起的一个轻量级 Java 框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的,它使用基本的 JavaBean 来完成以前只可能有 EJB 完成的事情。它的核心是控制反转(IoC)和面向切面(AOP)。任何 Java 应用都可以从 Spring 中收益。
2. Spring 的整体架构
Spring 框架是一个分层架构,它包含一些列的功能要素,并被分为大约 20 个模块,如下图所示:
这些模块被总结为一下几部分:
2.1 Core Container
Core Container 包含有 Core、Beans、Context、Express Language 模块。
Core 和 Beans 模块是框架的基础部分,提供 IOC 和 DI 特性。
- Core 模块主要包含 Spring 框架基本的核心工具类,Spring 的其他组件都要用到这个包里的类
- Beans 模块是所有应用都要用到的,它包含访问配置文件、创建和管理 bean 以及 IOC/DI 操作相关的所有类
- Context 模块构建与 Core 和 Beans 模块基础之上,提供了一种类似于 JNDI 注册器的框架式的对象访问方法。Context 模块继承了 Beans 的特性,为 Spring 核心提供了大量扩展,添加了对国际化(如:资源绑定)、事件传播、资源加载和对 Context 的透明创建的支持。ApplicationContext 接口是 Context 模块的关键
- Express Language 模块提供了强大的表达式语言,用于在运行时查询和操作对象。
2.2 Data Access/Integration
Data Access/Integration 层包含 JDBC、ORM、OXM、JMS、Transaction 模块。
- JDBC 模块提供了一个 JDBC 抽象层,它包含了 Spring 对 JDBC 数据访问进行封装的所有类
- ORM 模块为流行的对象-关系映射 API,如: JPA、JDO、Mybatis等,提供了一个交互层
- OXM 模块提供了一个对 Object/XML 映射实现的抽象层,Object/XML 映射实现包括:JAXB、Castor、XMLBeans、JiBX 和 XStream
- JMS 模块主要含了一些制造和消费消息的特性
- Transaction 模块支持编程和生命性的事务管理,这些事务类必须实现特定的接口,并且对所有的 POJO 都适用
2.3 Web
Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文
- Web 模块:提供了基础的面向 Web 的集成特性。如:多文件上传
- Web-Servlet 模块
- Web-Struts 模块
- Web-Porlet 模块
2.4 AOP
AOP 模块提供了一个符合 AOP 联盟标准的面向切面编程的实现,它让你可以定义例如方法拦截器和切点,从而将逻辑代码分开,降低它们之间的耦合性。利用 source-level 的元数据功能,还可以将各种行为信息合并到你的代码中。
Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不同依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。
- Aspects 模块提供了对 AspectJ 的集成支持
- Instrumentation 模块
2.5 Test
Test 模块支持使用 JUnit 和 TestNG 对 Spring 组件进行测试。
各个模块之间的依赖关系
3. 环境搭建
3.1 源码获取
-
进入 github 官网,搜索 Spring
-
找到 spring-framework 工程,并进入
-
切换自己需要的版本
-
可获取 Git 分支链接
3.2 IDEA 导入
IDEA 下 Spring Git 拉取分支。
因为,我没有搭建此环境,所以,这里就省略了。读者可以到网上找其他的方法哈~~~
接下来来看看 Spring 的一个入门案例咯
4. Spring 入门案例
在 Spring 中,bean 是最核心的东西,因为 Spring 就像是个大水桶,而 bean 就像是容器中的水,水桶脱离了水便也没什么用处了~~~这里使用 Spring 入门案例来回顾容器的基本用法。