spring IoC 初步理解
之前的代码里一整就会出现这个context那个context,这个上下文那个上下文的。究其原因都是springIoC容器的知识。阅读《spring揭秘》这本书,自己总结了一下学习到了IoC。
1. IoC为我们解决了什么问题
在没有容器的年代,我们用一个方法的时候通常是两步 1 new A 2 xxx.method()
有了容器之后,我们就可以告诉容器我们的需要A 并且直接调用A的方法就可以了
2. bean的注入方式
说到容器,bean就不得不说了,bean就是IoC中类的实例
将bean放入IoC中 ,主要有三种方式
构造方法
setter方法
*接口注入
3. IoC service provider
IoC所有功能中有一个东西叫IoC service provider,它主要的职责是对象的构建管理和对象的以来绑定
他构建管理对象的方法主要有三种
直接编码方式,就是通过一个方法直接注册实例
配置文件
元数据的方式,@inject
4. 容器类型
IoC一共有两种容器:BeanFactory 和 ApplicationContext
如图所示,ApplicationContext是在BeanFactory 的基础之上构建的,并且提供更多的功能,包括:
统一的资源管理策略
国际化信息支持
容器内时间发布
- 简化的多配置文件家在功能
5. 来看BeanFactory
5.1 BeanFactory IoC容器,所以他首先是能够做到一个传唤实例的作用
BeanFactory c = new xml(“A的路径”);//通过路径获取bean,并将其放在容器中
A a = c.getBean(“A”); //在容器中获取A
a.method();//调用a的方法
他的三种注册和绑定方式的实现:
直接编码,如上
配置文件 ,
注解,例如@component
5.2 bean的scope类型
bean的scope是用来声明容器中的对象的应用场景或者对象的生命周期
singleton:生命周期与容器一致
prototype:对于该对象来说,每一次请求都要生成一个新的实例
request,session:每个http请求生成一个新的实例,session存在时间更长一点
- globle session:和session一样的生命周期
5.3 IoC的实现
IoC的实现主要分启动阶段和实例化阶段
用什么方式初始化bean实例,容器的内部实现主要用的是策略模式,例如 反射,CGLIB动态字节码方式
6. ApplicationContext
以为他是继承BeanFactory的,所以BeanFactory的所以功能他都有