先列几个问题,带着问题阅读能提高阅读效率,提升收益率
- Ioc容器是什么?Ioc容器负责类实例对象的生命周期管理,从实例对象的创建到对象的回收。同时解决在实例化对象过程中实例化对象之间的依赖问题。以下2种方式都可以称为依赖问题即A对象依赖B对象
public class A{ public A(classB bname){ this.b = bname } }
public class A{ public classB b = new classB(); }
- 实现Ioc容器需要解决什么问题?首先要解决托管的对象存储的问题,其次呢实例化对象后,如果对象之间存在依赖问题要用什么办法来解决,依赖问题的核心有2个方面:1.如何把依赖注入进去三种方式:构造方法注入、set方法注入、接口注入,2.依赖注入方式有了怎么让程序知道对象A依赖了对象B呢,转换下就变成如何依赖关系保存在哪里,保存方式有三种:代码中人工硬编码的方式(没啥意义,有这功夫new一个它不香吗?)、配置文件描述依赖关系,普遍采用xml(麻烦一点没减少,在笔者看来也没啥意义)、元数据保存依赖关系用注解的方式实现(注解人工写的东西是最少的,笔者才感觉到了使用上的轻松确实比new大大节省时间)。
- Ioc容器实现方式是什么?BeanFactory与ApplicationContext就是对Ioc容器理念的具体实现不但解决了依赖注入问题,也解决了大量托管对象存储的问题,毕竟要把托管的对象存储起来才能再使用的时候调用,不然咋搞哦。
看了这几个问题是不是Ioc容器的大概方向是不是就已经有了,如果要挖一挖Ioc容器的,那重点就是学习BeanFactory或者ApplicationContext都是可以的,这两者都是对Ioc的实现,区别是ApplicationContext是在BeanFactory的基础上进行了功能上的扩展,先看看BeanFactory也能更好的理解ApplicationContext。
转换下思路要学习Ioc只要学习下BeanFactory就行了!!
链接:
Ioc容器之BeanFactory->了解BeanFactory做了些什么、操作流程是怎么样的
Ioc容器之ApplicationContext->了解ApplicationContext与BeanFactory的区别