骑士李四记录:Spring源码解析
Spring是一款用于简化企业级Java应用开发的分层开源框架,它有着强大的扩展、融合能力,善于将各种单层框架完美地糅合在一起,并建立一个完整体系,统一、高效地构造可提供企业级服务的应用系统。
Spring主要分为8大模块:
数据处理模块(Data Access/Integration)、Web模块、AOP(Aspect OrientedProgramming)模块、Aspects模块、Instrumentation模块、Messaging模块、CoreContainer模块和Test模块。
数据处理模块(Data Access/Integration):
模块由JDBC、Transactions、ORM、OXM和JMS等模块组成。JDBC模块提供了不需要编写冗长的JDBC代码和解析数据库厂商特有的错误代码的JDBC-抽象层;Transactions模块支持编程和声明式事务管理;ORM模块提供了流行的Object-Relational Mapping(对象-关系映射)API集成层,包含JPA、JDO和Hibernate等ORM框架;OXM模块提供抽象层,用于支持Object/XML mapping(对象/XML映射)的实现;JMS模块(Java Messaging Service)包含生产和消费信息的功能。
Web模块:
模块由Web、WebSocket、Servlet和Portlet等模块组成
AOP(Aspect OrientedProgramming)模块、
该模块是Spring的代理模块,也是Spring的核心模块,它巧妙地利用了JVM动态代理和CGLIB动态代理面向过程编程,来实现业务零侵入、低耦合的效果
Aspects模块、
该模块提供了与 AspectJ(一个功能强大并且成熟的面向切面编程的框架)的集成,它扩展了Java语言。
Instrumentation模块、
该模块是 Spring 对其他容器的集成及对类加载器的扩展实现,其子模块 spring-instr ument-tomcat实现了Tomcat Instrumentation代理功能
Messaging模块:
该模块是从Spring集成项目(例如 Message、MessageChannel、MessageHandler及其他基于消息应用的基础模块)中抽象出来的,类似于基于注解的Spring MVC编程模块,包含一系列消息与方法的映射注解。
CoreContainer模块:
该模块(也叫Spring核心容器模块)是Spring的根基,由Beans、Core、Context、SpEL四个子模块组成,这四个子模块如下所述。
Beans模块和Core模块提供框架的基础部分,包含IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入)功能,使用 BeanFactory 基本概念来实现容器对Bean的管理,是所有Spring应用的核心。Spring本身的运行都是由这种Bean的核心模型进行加载和执行的,是Spring其他模块的核心支撑,是运行的根本保证。
Context(包含 Spring-Context和 Spring-Context-Support两个子模块)模块建立在Core模块和 Beans模块的坚实基础之上,并且集成了 Beans模块的特征,增加了对国际化的支持,也支持Java EE特征。ApplicationContext接口是Context模块的焦点。Spring-Context-Support模块支持集成第三方常用库到Spring应用上下文中,例如缓存(EhCache、Guava)、调度Scheduling框架(CommonJ、Quartz)及模板引擎(FreeMarker、Velocity)。
SpEL模块(Spring-Expression Language)提供了强大的表达式语言来查询和操作运行时的对象。
Test模块:
该模块支持通过组合JUnit或TestNG来进行单元测试和集成测试。