IOC (Inversion of control)控制反转。
将对象创建(实例化、管理)的控制权交给了IOC容器。
由IOC容器实例化对象开存储起来,需要哪个对象时从IOC容器中取。
不使用spring的话,是由应用程序需要什么对象,就自己创建,使用spring ,则是由IOC容器统一管理,应用程序等待他把需要的依赖注入到自己的组件中。
DI 依赖注入 (Dependency Injection)由容器动态的将依赖的对象注入到组件中。与IOC是同一概念的不同描述,DI指被注入对象依赖IOC容器配置依赖对象。
谁依赖谁:应用程序依赖IOC容器。
为什么需要依赖:应用程序需要IOC容器来提供对象需要的外部资源。
谁注入谁:IOC容器注入应用程序的某个对象和依赖的对象。
注入了什么:注入了某个对象需要的外部资源。
Bean 的生命周期
1、创建=》构造方法=》set方法注入值=》init初始化=》构建成功=》回收
2、创建=》构造方法=》注入属性=》后处理器前置过程=》构建成功=》后处理器后置过程=》容器关闭时销毁
3、创建=》执行构造方法=》注入属性值=》BeanNameAware的setBeanName=》BeanFactoryAware的setBeanFactory
=>后处理器的前置过程 (BeanPostProcessor . processBeforeInitialization 方法 )
=>initializingBean 的afterPropertiesSet() =》执行bean的init-method方法=》后置处理器的后置过程(BeanPostPeocessor .pocessAfterInitilization)==>Bean可以使用了,容器关闭时 =》DisposibleBean 的destory()销毁
4、beanDefinition 里面会存储一些bean实例的信息,如属性值,scope,构造方法的参数列表。创建bean的时候会根据beanDefinition里描述的信息来创建,beanDefinition的作用是为了可以方便的进行修改属性值和其他元信息,比如通过BeanFactoryPostProcessor进行修改一些信息,然后在创建Bean对象时就可以结合原始信息和修改后的信息创建对象了。
网友评论