• 【招银网络科技java面试题目面试经验】-看准网


    面试官的问题:

    问看到简历中的项目,简单介绍一下用到的框架

    答这个项目主要是学校实训的项目,给的选题去做的,使用到了SSH的三个框架。其中Spring主要使用了IoC功能,利用Spring的Bean容器去管理action、实体类、持久类的实例(应该再加上sessionFactory,需要将id为sessionFactory的Bean注入到DAO类中);Struts主要用来做MVC层的实现;Hibernate用来做对象持久化

    问讲讲对于Spring IoC的理解

    答Spring的实现利用了Java的反射机制(还有工厂设计模式、xml配置文件以及、dom4j解析xml文件)。Spring的IoC避免我们在需要一个对象时手动的去创建它,而是将对象的生成由Spring来管理,这是控制反转;而在我们需要的时候,只需要根据设计好的Bean的id就可以让Spring将对应的实例注入到我们需要的地方,这是依赖注入。(IoC是一种设计思想,它的出现致力于设计出更加松耦合的程序,传统的应用程序中类内部主动创建依赖对象,这导致了类与类之间的高耦合,不利于测试,有了IoC之后,我们把创建和查找依赖对象的控制权交给了容器,由容器负责将对象注入,所以对象和对象之间是松耦合的、便于测试的(建议再去了解Spring解决循环依赖的问题,利用hashmap作三级缓存解决))

    问讲讲依赖注入如何实现的

    答依赖注入使用java 的反射机制实现,java.lang.reflect包(具体实现在Spring中比较复杂,如果不涉及Bean的创建流程的话,面试官期望得到的回答应该是Spring利用Cglib作为默认的实例化策略(动态字节码增强技术),还有一个BeanUtils(Java反射机制))

    问讲讲依赖注入的优缺点

    答优点:

    用Spring替代自己管理实例的注入,尤其在单例的需求上,不用我们自己书写单例模式,只需要在xml或者注解中将scope设置为singleton即可

    (1.资源(Bean)的集中管理,实现资源的可配置和易管理)

    (2.降低了组件之间的耦合度)

    缺点:

    1.如果注入对象特别多的时候,比如用构造器注入的时候就会显得冗余,亦会使代码维护上造成困难

    2.如果用setter注入的话,就不能将其设为final

    3.因为使用反射实现,在实例化以及注入的时候会经历更多的步骤,使得执行效率降低

    (1.创建对象的步骤变得复杂)

    (2.使用反射来创建对象,在执行效率上会有些损耗,但正因此才提高了程序的灵活性和可维护性)

    (3.对于xml方式,IDE的重构支持比较差,比如你修改了类名之后就需要对xml中手动进行修改)

    (4.如果用setter注入的话,就不能将其设为final)

  • 相关阅读:
    LCR 147.最小栈
    uniapp 中添加 vconsole
    21条最佳实践,全面保障 GitHub 使用安全
    网络防御--防火墙
    综合电商商城小程序的作用是什么
    C语言中的文件操作那些事儿~~
    2023年11月11日~11月17日周报(基于matlab生成模拟数据、批量修改文件名、重写dataset)
    【leaflet】学习笔记1-4
    中秋节静态HTML网页作业作品 大学生中秋网页设计制作成品 简单DIV CSS布局网站
    AUTOSAR知识点 之 Dcm (一):基础知识梳理
  • 原文地址:https://blog.csdn.net/m0_67401134/article/details/126553379