Spring源码阅读(一)——整体结构
2017-08-22 19:54
183 查看
Spring 总共大约有20个模块,由1300多个不同的文件构成。
Spring源码阅读可以分为三个路线:IOC,AOP,外部组件。
个人主页:tuzhenyu’s page
原文地址:Spring源码阅读(一)——整体结构
![](https://img-blog.csdn.net/20170828123622192?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzk2NzE3NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
spring-beans,spring-core是spring框架的核心包,实现了控制反转和依赖注入的容器功能。
控制反转(IOC)是指把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。
依赖注入(DI)是控制反转的一种实现方式,除却依赖注入还有依赖查找(DL),后来依赖查找被移除所以Spring中的控制反转也被称为依赖注入。依赖注入主要包括:接口注入(Interface Injection),设值注入(Setter Injection)和构造子注入(Constructor Injection)三种方式。
BeanFactory 接口是Spring框架中的核心接口,它是工厂模式的具体实现。BeanFactory 使用控制反转对应用程序的配置和依赖性规范与实际的应用程序代码进行了分离。但 BeanFactory 容器实例化后并不会自动实例化 Bean,只有当 Bean 被使用时 BeanFactory 容器才会对该 Bean 进行实例化与依赖关系的装配。
spring-context模块构架于 spring-beans和spring-core核心包之上,拓展了BeanFactory生成Spring的上下文环境。ApplicationContext是该模块的核心接口,她是 BeanFactory 的超类,与 BeanFactory 不同,ApplicationContext 容器实例化后会自动对所有的单实例 Bean 进行实例化与依赖关系的装配,使之处于待用状态。
spring-aop是Spring的另一个核心模块,是Aop主要的实现模块。是以JVM的动态代理技术为基础,然后设计出了一系列的Aop横切实现,比如前置通知、返回通知、异常通知等,同时,Pointcut接口来匹配切入点,可以使用现有的切入点来设计横切面,也可以扩展相关方法根据需求进行切入。
spring-aspects模块集成AspectJ框架,为AOP
a440
提供具体的实现方法。
spring-jdbc模块是Spring 提供的JDBC抽象框架的主要实现模块,用于简化Spring JDBC。
spring-tx模块是Spring JDBC事务控制实现模块
spring-orm模块是ORM框架支持模块,主要集成 Hibernate, Java Persistence API (JPA) 和 Java Data Objects (JDO) 用于资源管理、数据访问对象(DAO)的实现和事务策略。
spring-web模块为Spring提供了最基础Web支持,主要建立于核心容器之上,通过Servlet或者Listeners来初始化IoC容器,也包含一些与Web相关的支持。
spring-webmvc模块众所周知是一个的Web-Servlet模块,实现了Spring MVC(model-view-controller)的Web应用。
Spring源码阅读可以分为三个路线:IOC,AOP,外部组件。
个人主页:tuzhenyu’s page
原文地址:Spring源码阅读(一)——整体结构
Spring整体结构
Spring框架根据功能可以分为核心容器,AOP切面编程,数据访问和WEB这四个主要的部分。(一)核心容器
核心容器主要是由spring-beans,spring-core,spring-context和spring-expression组成。spring-beans,spring-core是spring框架的核心包,实现了控制反转和依赖注入的容器功能。
控制反转(IOC)是指把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的“控制反转”概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。
依赖注入(DI)是控制反转的一种实现方式,除却依赖注入还有依赖查找(DL),后来依赖查找被移除所以Spring中的控制反转也被称为依赖注入。依赖注入主要包括:接口注入(Interface Injection),设值注入(Setter Injection)和构造子注入(Constructor Injection)三种方式。
BeanFactory 接口是Spring框架中的核心接口,它是工厂模式的具体实现。BeanFactory 使用控制反转对应用程序的配置和依赖性规范与实际的应用程序代码进行了分离。但 BeanFactory 容器实例化后并不会自动实例化 Bean,只有当 Bean 被使用时 BeanFactory 容器才会对该 Bean 进行实例化与依赖关系的装配。
spring-context模块构架于 spring-beans和spring-core核心包之上,拓展了BeanFactory生成Spring的上下文环境。ApplicationContext是该模块的核心接口,她是 BeanFactory 的超类,与 BeanFactory 不同,ApplicationContext 容器实例化后会自动对所有的单实例 Bean 进行实例化与依赖关系的装配,使之处于待用状态。
(二)AOP
AOP主要是spring-aop,spring-aspects和spring-instrumentation组成spring-aop是Spring的另一个核心模块,是Aop主要的实现模块。是以JVM的动态代理技术为基础,然后设计出了一系列的Aop横切实现,比如前置通知、返回通知、异常通知等,同时,Pointcut接口来匹配切入点,可以使用现有的切入点来设计横切面,也可以扩展相关方法根据需求进行切入。
spring-aspects模块集成AspectJ框架,为AOP
a440
提供具体的实现方法。
(三)数据访问
数据访问主要是由spring-jdbc,spring-tx,spring-orm组成。spring-jdbc模块是Spring 提供的JDBC抽象框架的主要实现模块,用于简化Spring JDBC。
spring-tx模块是Spring JDBC事务控制实现模块
spring-orm模块是ORM框架支持模块,主要集成 Hibernate, Java Persistence API (JPA) 和 Java Data Objects (JDO) 用于资源管理、数据访问对象(DAO)的实现和事务策略。
(三)WEB
WEB主要是由spring-web,spring-webmvc组成。spring-web模块为Spring提供了最基础Web支持,主要建立于核心容器之上,通过Servlet或者Listeners来初始化IoC容器,也包含一些与Web相关的支持。
spring-webmvc模块众所周知是一个的Web-Servlet模块,实现了Spring MVC(model-view-controller)的Web应用。
总结
Spring主要分为核心组件和外部组件两大部分,其中核心组件又可以分为IOC和AOP两部分。因此,spring的源码阅读可以分为三个路线:IOC,AOP,外部组件。相关文章推荐
- Spring源码阅读之准备篇-Spring整体架构分析
- jQuery源码阅读笔记——整体结构
- 如何阅读jQuery源码整体架构
- Spring源码阅读之IoC容器初始化3 -- BeanDefinition在IoC容器中的注册
- Spring-Framework 源码阅读之@Autowired和AutowiredAnnotationBeanPostProcessor
- intellij idea15搭建spring源码阅读环境
- Spring源码阅读笔记
- Spring 源码阅读 AOP一
- Spring IOC 源码阅读之资源定位加载
- Spring 源码阅读–beans-(1)
- Spring 源码阅读(1)
- Spring源码阅读(七)
- TensorFlow0.8源码阅读 -- 代码目录结构讲解
- Spring源码阅读-实例化策略InstantiationStrategy
- Spring源码阅读(三)—IOC容器依赖注入
- Spring 源码阅读一 环境搭建
- 初始化IoC容器(Spring源码阅读)
- jQuery源码分析系列(30) : Ajax 整体结构
- 三 spring源码解析--- Bean解析接口结构分析
- DotText源码阅读(2)-工程、数据库表结构