spring的IoC理解
IoC名词含义指的是控制反转或依赖注入,但是本质上指的是我们在不同的类中相互依赖的不是类本身,而是不同的类提供出来的不同服务,本质是依赖于服务。由于业务处理逻辑本身是一种无状态的处理过程,因此不该使用者去关心服务提供者的生命周期(创建、初始化、销毁),使用者关心于提供的服务本身。IoC本质上就是去控制类的生命周期,让开发者关注于服务本身的工具。
注入方式
从上一个问题又引出这一个问题,IoC容器管理着类的生命周期,但是IoC容器不知道应该将管理的类是服务于那种业务场景下。因此就需要我们将管理的类注入到业务类中。spring常用的三种注入方式
- @Autowired,自动装配注入,基于反射
- 构造器注入
- setter方法注入
spring的组件
(图自:http://singleant.iteye.com/blog/1177358)
Resource 体系
org.springframework.core.io.Resource,对资源的抽象。它的每一个实现类都代表了一种资源的访问策略,如 ClassPathResource、RLResource、FileSystemResource等
ResourceLoader 体系
org.springframework.core.io.ResourceLoader定义了统一资源加载的方法
BeanFactory 体系
org.springframework.beans.factory.BeanFactory是spring最底层定义如何操作bean的接口,AbstractBeanFactory内部持有一个ConcurrentHashMap来保存name和BeanDefinition之间的映射
BeanDefinition 体系
BeanDefinitionReader 体系
org.springframework.beans.factory.support.BeanDefinitionReader 的作用是读取 Spring 的配置文件的内容,并将其转换成 Ioc 容器内部的数据结构 :BeanDefinition