Spring ioc 详细概述(面试的详细回答)

    技术2022-07-13  93

    Spring ioc 详细概述(面试的详细回答)

    Spring ioc 详细概述(面试的详细回答)为什么需要IOC?1.效率方面2.管理对象方面 IOC是什么?IOC容器的初始化流程ioc容器的功能ioc的优缺点

    Spring ioc 详细概述(面试的详细回答)

    (面试问题我们一般从四个方面来回答①为什么要使用②是什么③怎么用④在哪里用)

    为什么需要IOC?

    1.效率方面

    传统上创建对象都需要自己new出来,而ioc是将new对象的控制权交给工厂,由工厂来创建,相比于传统的方法,效率提升了很多。

    2.管理对象方面

    如果对象之间存在很多依赖关系,那么当需要修改维护其中一个对象时,会导致所有的对象都需要修改,牵一发而动全身。而ioc减少了代码之间的耦合,更好的管理对象。

    IOC是什么?

    ioc的全英文名是:Inversion Of Control ,直译过来就是控制反转,控制反转是把传统上由程序代码直接操控对象(new对象)的调用权交给ioc容器,由容器来实现对象的创建,依赖,销毁,初始化等等。

    这里都说到了ioc容器,那么他的初始化流程和功能是什么呢?

    IOC容器的初始化流程

    1.spring启动之后,读取xml配置信息、注解、java类,将每一个bean配置解析为一个BeanDefinition对象,再将所有的BeanDefinition对象放入BeanDefinitionMap中(其中bean的id为key键,BeanDefinition对象为值)。 2.从beanDefinitoinMap中取出所有的非懒加载beanDefinition实例化bean(通过反射来实例化),并将bean加载进缓存,即放入singletonObjects(仅单例)的map中。

    ioc容器的功能

    ioc的优缺点

    优点:

    1.加快了开发的效率,可以不用自己一个个new来创建对象,能通过工厂统一的创建。 2.消减了代码之间的耦合,提高了代码的可维护性和灵活性。 3.节约内存,减少了大量的创建对象,维护依赖,销毁对象的代码。

    缺点:

    1.需要去学习使用怎么去创建对象,相对于传统方法复杂一些。 2.利用反射来创建对象,单从反射和new的两种创建对象方法上对比,效率上折损了一些。

    Processed: 0.017, SQL: 9