IOC是Spring的核心。IOC,控制反转,指应用程序不对依赖对象进行创建与维护,依赖对象的创建与维护有外部容器(也就是Spring容器)负责。通俗的说,就是我们不在类的内部new一个对象了,new对象的操作交给外部容器来做,这样控制权就从应用程序转移到了外部容器,即所谓的反转。
那么,将对象的创建交给外部容器来做,外部容器又是怎样创建对象的呢?这里就用到DI(也就是依赖注入)了,所谓的DI就是指在运行时,由外部容器动态地将依赖对象注入到组件中。在网上看见有人说,控制反转就是注入依赖。后来查了一下,这是不对的,依赖注入其实是IOC的一种特殊形式,IOC分为依赖注入和依赖查找两种。依赖注入又分为构造方法依赖注入和设置方法依赖注入,而依赖查找分为依赖拖拽和上下文依赖查询。依赖注入。当我们需要使用组件前就需要依赖实例的话,我们应该使用构造方法注入。其实我们最常用到的还是设置方法注入,他是侵入性最低的注入机制。Spring同时支持两种方式的注入。
依赖查找。BeanFactory是Spring IOC容器的核心,它负责管理组件和他们之间的依赖。在Spring中,bean表示任何受容器管理的组件,在一定程度上遵循JavaBean规范,但不是必须的。BeanFactory.getBean(beanName)就是对bean进行查找。在上下文依赖查找中,查找的过程是在容器管理的资源中进行的,而不是在集中的注册表中,并且通常是作用于某些设置点上。
此外,在网上看见这样一句话来形容IOC,觉得很有意思,拿来说说:
看见这篇文章的朋友如果有什么意见,不妨说出来,大家交流学习。