spring源代码基础和组件


spring的IoC理解

IoC名词含义指的是控制反转依赖注入,但是本质上指的是我们在不同的类中相互依赖的不是类本身,而是不同的类提供出来的不同服务,本质是依赖于服务。由于业务处理逻辑本身是一种无状态的处理过程,因此不该使用者去关心服务提供者的生命周期(创建、初始化、销毁),使用者关心于提供的服务本身。IoC本质上就是去控制类的生命周期,让开发者关注于服务本身的工具。

注入方式

从上一个问题又引出这一个问题,IoC容器管理着类的生命周期,但是IoC容器不知道应该将管理的类是服务于那种业务场景下。因此就需要我们将管理的类注入到业务类中。spring常用的三种注入方式

  1. @Autowired,自动装配注入,基于反射
  2. 构造器注入
  3. setter方法注入

spring的组件

(图自:http://singleant.iteye.com/blog/1177358)

8dekeU.jpg

Resource 体系

8defXV.jpg

org.springframework.core.io.Resource,对资源的抽象。它的每一个实现类都代表了一种资源的访问策略,如 ClassPathResource、RLResource、FileSystemResource等

ResourceLoader 体系

8devnK.png

org.springframework.core.io.ResourceLoader定义了统一资源加载的方法

BeanFactory 体系

org.springframework.beans.factory.BeanFactory是spring最底层定义如何操作bean的接口,AbstractBeanFactory内部持有一个ConcurrentHashMap来保存name和BeanDefinition之间的映射

BeanDefinition 体系

8dnjoD.png
BeanDefinition用于描述bean的元数据

BeanDefinitionReader 体系

8duKln.png

org.springframework.beans.factory.support.BeanDefinitionReader 的作用是读取 Spring 的配置文件的内容,并将其转换成 Ioc 容器内部的数据结构 :BeanDefinition


  TOC