Spring 整体架构和环境搭建
整体架构
[图片来源:https://yq.aliyun.com/articles/25646]
Core Container
核心容器,包含有Core、Beans、Context和Expression Language模块。
Core和Beans模块是框架的基础部分,提供IoC(控制反转)和依赖注入特性。
- Core:核心工具类,供其他组件调用,是其他组件的基本核心
- Beans:包含配置文件、创建和管理bean以及Ioc和DI操作相关的所有类,其他模块都要用到Beans
- Context:构建于Core和Beans模块基础之上,提供了类似JNDI注册起的框架式的对象访问方法。Context继承了Beans的特性,为Spring提供了大量的扩展(国际化(如:资源绑定)、事件传播、资源加载),支持J2EE的一些特性,如EJB、JMX和基础的远程处理
- Expression Language:用于在运行时查询和操作对象
Data Access/Integration
包含JDBC、ORM、OXM、JMS和Transaction模块。
- JDBC:包含Spring对JDBC数据访问进行封装的所有类
- ORM:关系对象映射模型,例如Mybatis、Hibernate、API等。Spring插入了若干个ORM框架,包括JDO、HIbernate、iBatisSQL Map,所有这些都遵从Spring的通用事物和DAO异常层次结构
Web
web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。web层包含了Web、Web-Servlet、Web-Struts和Web-Porlet模块。
- Web模块:提供了基础的Web的集成特性,例如:文件上传、使用servlet listeners初始化IoC容器以及一个面向Web的应用上下文。
- Web-Servlet模块:web.servlet.jar : 该模块包含Spring的model-view-controller(MVC)实现,是的模型范围内的代码和web forms之间能够清楚滴分离开来,并能够和Spring框架的其他特性集成在一起。
- Web-Struts模块:
- Web-Porlet模块:
AOP
遵循面向切面编程的协议,例如拦截器和切点,分离逻辑代码,降低耦合性
- Aspects模块提供了对AspectJ的继承支持
- Instrumentation模块提供了class instaumentation支持和classloader实现,使得可以在特定的应用服务器上使用
Test
支持使用JUnit和TestNg对Spring组件进行测试
环境搭建(Mac)
安装Gradle
Homebrew 安装(略)
> brew install gradle
查看版本
> gradle -v
下载Spring项目并导入
安装git(略)
clone代码
git clone git://github.com/SpringSource/Spring-framework.git
导入idea
步骤: Open --> 选择spring-framework文件夹 --> 确定 --> 等待。。。
idea比eclipe导入项目流畅多了!赞
总结
从项目整体框架入手,了解核心组件,并为以后的阅读源码铺垫, 下一章将首次进入源码阅读。