在阅读源码之前,先了解下Spring的整体架构:
1、Spring的整体架构
1. Ioc(控制反转)
-
Spring核心模块实现了Ioc的功能,它将类与类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描述,由Ioc容器负责依赖类之间的创建,拼接,管理,获取的工作;
-
BeanFactory接口是Spring框架的核心接口,它实现类容器许多核心的功能;
-
Context模块构建于核心模块之上,扩展类BeanFactory的功能,添加类国际化,Bean生命周期控制,框架事件体系,资源加载透明化等多项功能。ApplicationContext是Context模块的核心接口;
2. AOP(面向切面编程)
-
AOP是进行横切逻辑编程的思想,它开拓类考虑问题的思路;
-
Spring提供类满足AOP Alliance规范的实现,整合类AspectJ这种AOP语言级的框架;
-
在Spring里实现AOP编程由众多选择;
3. Spring MVC
-
Spring提供一个完整的类似于Struts的MVC框架,称为Spring MVC;
-
Spring也可以整合其他Struts,WebWork等MVC框架;
-
以DispatcherServlet为核心,实现了如何与Web容器环境集成,Web请求的拦截,分发,处理和ModelAndView数据的返回,以及集合前端模块。
4. Spring JDBC/ORM
-
Spring在DAO的抽象层面,建立了一套面向DAO层的统一的异常体系;
-
同时将各种访问数据的检查型异常转换为非检查型异常,为整合各种持久层框架提供基础;
-
Spring通过模板化技术对各种数据库技术进行封装,将模板化的代码隐藏起来,是数据访问的程序得到大幅简化;
5. Spring事务处理
-
借助AOP技术,Spring提供了声明式事务的功能;此外,还支持编程式事务。
-
Spring事务分为全局事务和局部事务,全局事务需要借助底层容器的JTA(Weblogic,Websphere)机制,局部事务可以整合其他持久化框架,由事务处理器进行处理如DataSourceTransactionManager,HibernateTransactionManager,JtaTransactionManager,JdoTransactionManager等。
6. Spring远程调用
-
提供一个在Web应用中高效,双向的通信;
-
需要考虑到客户端和服务器之间的高频和低时延消息交换
7. Spring应用
- Spring的一些子项目