zoukankan      html  css  js  c++  java
  • 经典Spring面试题和答案

    1. 什么是spring?
    Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。

    2. 使用Spring框架的好处是什么?
    轻量:Spring 是轻量的,基本的版本大约2MB。
    控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
    面向切面的编程(AOP):Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。
    容器:Spring 包含并管理应用中对象的生命周期和配置。
    MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
    事务管理:Spring 提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务(JTA)。
    异常处理:Spring 提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO抛出的)转化为一致的unchecked 异常。


    3. Spring由哪些模块组成?
    以下是Spring 框架的基本模块:
    Core module
    Bean module
    Context module
    Expression Language module
    JDBC module
    ORM module
    OXM module
    Java Messaging Service(JMS) module
    Transaction module
    Web module
    Web-Servlet module
    Web-Struts module
    Web-Portlet module


    4. 核心容器(应用上下文) 模块。
    这是基本的Spring模块,提供spring 框架的基础功能,BeanFactory 是 任何以spring为基础的应用的核心。Spring 框架建立在此模块之上,它使Spring成为一个容器。


    5. BeanFactory – BeanFactory 实现举例。
    Bean 工厂是工厂模式的一个实现,提供了控制反转功能,用来把应用的配置和依赖从正真的应用代码中分离。
    最常用的BeanFactory 实现是XmlBeanFactory 类。


    6. XMLBeanFactory
    最常用的就是org.springframework.beans.factory.xml.XmlBeanFactory ,它根据XML文件中的定义加载beans。该容器从XML 文件读取配置元数据并用它去创建一个完全配置的系统或应用。


    7. 解释AOP模块
    AOP模块用于发给我们的Spring应用做面向切面的开发, 很多支持由AOP联盟提供,这样就确保了Spring和其他AOP框架的共通性。这个模块将元数据编程引入Spring。


    8. 解释JDBC抽象和DAO模块。
    通过使用JDBC抽象和DAO模块,保证数据库代码的简洁,并能避免数据库资源错误关闭导致的问题,它在各种不同的数据库的错误信息之上,提供了一个统一的异常访问层。它还利用Spring的AOP 模块给Spring应用中的对象提供事务管理服务。


    9. 解释对象/关系映射集成模块。
    Spring 通过提供ORM模块,支持我们在直接JDBC之上使用一个对象/关系映射映射(ORM)工具,Spring 支持集成主流的ORM框架,如Hiberate,JDO和 iBATIS SQL Maps。Spring的事务管理同样支持以上所有ORM框架及JDBC。


    10. 解释WEB 模块。
    Spring的WEB模块是构建在application context 模块基础之上,提供一个适合web应用的上下文。这个模块也包括支持多种面向web的任务,如透明地处理多个文件上传请求和程序级请求参数的绑定到你的业 务对象。它也有对Jakarta Struts的支持。


    12. Spring配置文件
    Spring配置文件是个XML 文件,这个文件包含了类信息,描述了如何配置它们,以及如何相互调用。


    13. 什么是Spring IOC 容器?
    Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,并且管理这些对象的整个生命周期。


    14. IOC的优点是什么?
    IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载。


    15. ApplicationContext通常的实现是什么?
    FileSystemXmlApplicationContext :此容器从一个XML文件中加载beans的定义,XML Bean 配置文件的全路径名必须提供给它的构造函数。
    ClassPathXmlApplicationContext:此容器也从一个XML文件中加载beans的定义,这里,你需要正确设置classpath因为这个容器将在classpath里找bean配置。
    WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个WEB应用的所有bean。


    16. Bean 工厂和 Application contexts 有什么区别?
    Application contexts提供一种方法处理文本消息,一个通常的做法是加载文件资源(比如镜像),它们可以向注册为监听器的bean发布事件。另外,在容器或容器 内的对象上执行的那些不得不由bean工厂以程序化方式处理的操作,可以在Application contexts中以声明的方式处理。Application contexts实现了MessageSource接口,该接口的实现以可插拔的方式提供获取本地化消息的方法。


    17. 一个Spring的应用看起来象什么?
    一个定义了一些功能的接口。
    这实现包括属性,它的Setter , getter 方法和函数等。
    Spring AOP。
    Spring 的XML 配置文件。
    使用以上功能的客户端程序。


    18. 什么是Spring的依赖注入?
    依赖注入,是IOC的一个方面,是个通常的概念,它有多种解释。这概念是说你不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。


    19. 有哪些不同类型的IOC(依赖注入)方式?
    构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。
    Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。


    20. 哪种依赖注入方式你建议使用,构造器注入,还是 Setter方法注入?
    你两种依赖方式都可以使用,构造器注入和Setter方法注入。最好的解决方案是用构造器参数实现强制依赖,setter方法实现可选依赖。来源:深海

  • 相关阅读:
    设计模式—— 十 :模板方法模式
    设计模式—— 九 :抽象工厂模式
    StringUtils常用方法
    设计模式—— 八 :工厂方法模式
    Navicat查看并导出ER图
    设计模式—— 七 :单例模式
    设计模式—— 六:开闭原则
    设计模式—— 五:迪米特原则
    Java编码辅助工具:Mapstruct—— Java对象转换框架
    Java编码辅助工具:Lombok —— 避免重复臃肿的代码,提高效率
  • 原文地址:https://www.cnblogs.com/chengzikelo/p/5505329.html
Copyright © 2011-2022 走看看