IOC 怎么逻辑回答

面试的时候如果这样回答这个问题 会感觉很干吧  也体现不出来你的能力 需要更有逻辑性的回答Ioc全称inversion of control,即控制反转,指将对象的创建、销毁等的控制权交由Spring框架的Ioc容器进行管理,以往的JavaEE程序设计的对象创建时通过new来完成的,需要我们主动去创建。

而Ioc就是一个大工厂,现在不需要我们手动去new创建一个对象,需要时可以直接通过反射的机制来注入对象,同时也不需要我们主动去销毁对象,Spring框架帮我们进行了统一的管理。
IOC 怎么逻辑回答_第1张图片
Dl依赖注入有三种实现方式,一种接口注入已经被淘汰了,另外两种一个是属性setter注入方式,Spring通过无参构造或无参静态工厂方法实例化Bean对象后,再通过调用该Bean的setter方法实现注入第二种是构造注入,Spring直接通过调用有参的构造方法实现依赖注入,每一个参数就是一个依赖进阶回答IOC就是控制反转,是spring的两大特性之一,它仅仅是一种设计思想,而不是一种具体的技术实现,在spring中,控制反转是指将对象的控制权转移给spring框架进行处理,由spring框架帮我们创建对象,管理对象间的依赖关系,很大程度上简化了应用的开发,降低了对象之间的依赖程度和耦合度,便于资源的管理,在IOC容器中,所有的对象默认都是单例的。

IOC最常见以及最合理的方式就是依赖注入(DI)。IOC容器实际上就是一个MAP(键值对),里面存放的是各种对象(来自在xml文件中配置的bean节点,包含@Repository、@Service、@Controller、@Component注解的类),在项目启动时,会读取配置文件中的bean节点,根据限定类名使用反射创建对象放到MAP里面,还会扫描含有上述注解的类,同样使用反射创建对象到MAP里面此时MAP里面就有各种对象了,接下来的代码中需要使用到里面的对象时,在通过DI依赖注入,在项目启动时会读取配置文件xml里面bean节点的ref属性,根据id注入,id就是对象名。

控制反转通俗讲就是我们不用自己创建实例对象,都交给spring的bean工厂帮我们创建管理,这也是spring的核心思想,通过面向接口编程的方式来实现对业务组件的动态依赖。

没有引入IOC容器之前,对象A依赖对象B,那么对象A就需要主动创建对象B或者使用一斤创建的对象B,控制权在自己手里引入IOC容器之后,对象A与对象B失去了直接联系,当对象A需要对象B时,IOC容器会主动创建一个对象B注入到对象A需要的地方,通过前后对比,可以看到对象A获得依赖对象B的过程,由主动行为变成了被动行为,控制权颠倒了过来,这就是控制反转的由来全部对象的控制权都由IOC容器,所以IOC容器变成了系统核心。

依赖注入控制被反转之后,获得依赖对象的过程,由自身管理变成了IOC容器注入,依赖注入就是实现IOC的方法,就是由IOC容器在运行期间,动态的将某种依赖注入到对象之中,提升了组件重用的频率,为系统搭建一个;灵活、可扩展的平台。

你可能感兴趣的:(后端)