关于后端:IOC-怎么逻辑回答

0次阅读

共计 1263 个字符,预计需要花费 4 分钟才能阅读完成。

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

而 Ioc 就是一个大工厂,当初不须要咱们手动去 new 创立一个对象,须要时能够间接通过反射的机制来注入对象,同时也不须要咱们被动去销毁对象,Spring 框架帮咱们进行了对立的治理。

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 容器在运行期间,动静的将某种依赖注入到对象之中,晋升了组件重用的频率,为零碎搭建一个;灵便、可扩大的平台。

正文完
 0