spring相关面试题

  1. 控制反转(IOC)

    控制反转(IOC)是把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。
    所谓的“控制反转”就是对组件控制器的转移,从程序代码本身转移到了外部容器,由容器来创建对象并管理对象之间的依赖关系。
  2. 依赖注入(DI)

        依赖注入(DI)是对控制反转(IOC)的更准确的描述,即组件之间的依赖关系由容器在运行期决定,即由容器动态的将某种依赖
    关系注入到组件之中。
        依赖注入(DI)的基本原则是应用组件不应该负责查找或者其他依赖的写作对象。配置对象的工作应该由容器负责,查找资源的逻
    辑应该从应用组件的代码中抽取出来,交给容器来完成。
        举个例子:一个类A需要用到一个接口B中的方法,那么就需要为类A和接口B建立关系或者是依赖关系,最原始的方法是在列A中创
    建一个接口B的实现类C的实例,但这种方法需要开发人员自行维护两者的依赖关系,也就是说当依赖关系发生变动的时候需要修改代码并
    重新构建整个系统.如果通过一个容器来管理这些对象以及对象的依赖关系,则只需要在类A中定义好用于关联接口B的方法(构造器或者
    setter方法),将类A和接口B的实现类C放入容器中,通过对容器的配置来实现二者的关联。
        依赖注入可以通过setter方法注入(设置注入)、构造器注入和接口注入三种方式实现,spring支持setter注入和构造器注入,
    通常是由构造器注入来注入必须的依赖关系,对于可选的依赖关系,则setter注入是更好的选择。setter注入需要类提供无参构造器或
    者无参的静态工厂来创建对象。
  3. 面向切面(AOP)

        面向切面是一种程序设计范型,该范型以一种称为切面(aspect)的语言构造为基础,切面是一种新的模块化机制,用来描述分散
    在对象、类或方法中的横切关注点。
        横切关注是会影响到整个应用程序的关注功能,它跟正常的业务逻辑是正交的,没有必然的联系,但是几乎所有的业务逻辑都会涉    
    及到这些关注功能。通常,事务、日志、安全性等关注就是应用中的横切关注功能。
  4. bean的作用域有哪些

    spring的早期版本中,仅有两个作用域:singleton和prototype,前者表示bean以单例的方式存在;后者表示每次从容器中
    调用bean时,都会返回一个新的实例,prototype通常翻译为原型。
        补充:设计模式中的插件型模式中也有一个原型模式,原型模式也是一个常用的模式,例如做一个室内设计软件,所有的素材都在
    工具箱中,而每次从工具箱中取出的都是素材对象的一个原型,可以通过对象克隆来实现原型模式。
        spring2.x中针对WebApplicationContext新增了3个作用域,分别是:request(每次HTTP请求都会创建一个新的bean)、
    session(同一个HttpSession共享同一个bean,不同的HttpSession使用不同的bean)和globalSession(同一个全局session
    共享一个bean)。
        说明:单例模式和原型模式都是重要的设计模式。一般情况下,无状态或者状态不可变的类适合使用单例模式。在传统开发中,由
    于dao持有Connection这个非线程安全对象因而没有使用单例模式;但在spring环境下,所有dao类都可以采用单例模式,因为
    spring利用AOP和JavaAPI中的ThreadLocal对非线程安全的对象进行了特殊处理。
  5. 异常处理机制

你可能感兴趣的:(Spring)