• 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、AOP、ORM、DAO、MVC、WEB、Context

    Spring Core:核心类库,提供IOC服务;

    Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);

    Spring AOP:AOP服务;

    Spring DAO:对JDBC的抽象,简化了数据访问异常的处理;

    Spring ORM:对现有的ORM框架的支持;

    Spring Web:提供了基本的面向Web的综合特性,例如多方文件上传;

    Spring MVC:提供面向Web应用的Model-View-Controller实现。

    4、 spring 支持几种 bean 的作用域?

    spring支持5种作用域:

    • singleton:spring ioc 容器中只存在一个 bean 实例,bean 以单例模式存在,是系统默认值;
    • prototype:每次从容器调用 bean 时都会创建一个新的示例,既每次 getBean()相当于执行 new Bean()操作;
    • Web 环境下的作用域:
    • request:每次 http 请求都会创建一个 bean;
    • session:同一个 http session 共享一个 bean 实例;
    • global-session:用于 portlet 容器,因为每个 portlet 有单独的 session,globalsession 提供一个全局性的 http session

          bean默认的scope属性是 "singlaton"

    5、Spring Bean的生命周期

          实例化bean对象--设置对象属性--检查Aware相关接口并设置相关依赖(BeanNameAware、BeanFactoryAware、ApplicationCentextAware)--BeanPostProcessor前置处理--检查是否是InitializingBean以决定是否调用afterPropertiesSet方法--检查是否配置有自定义的initMenthodd方法--BeanPostProcessor后置处理--注册必要的Destruction相关回调接口--使用--销毁--是否实现DisposableBean接口--是否有自定义的Destroy方法。

    6、Spring事务实现方式

    • 编程式事务管理:这意味着你可以通过编程的方式管理事务,这种方式带来了很大的灵活性,但很难维护。
    • 声明式事务管理:这种方式意味着你可以将事务管理和业务代码分离。你只需要通过注解或者XML配置管理事务。

    7、Spring IOC有什么优点?

         Spring IOC负者创建对象、管理对象(通过依赖注入)、整合对象、配置对象以及管理这些对象的生命周期。

    8、IOC有生命优点?

         IOC或者依赖注入减少了应用程序的代码量。它使得应用程序的测试很简单,因为在单元测试中不再需要单例或JNDI查找机制。简单的实现以及较少的干扰机制使得松耦合得以实现。IOC容器支持勤性单例及延迟加载服务。

    9、如何给Spring 容器提供配置元数据?

    • XML配置文件。
    • 基于注解的配置。
    • 基于java的配置。

    10、什么是Spring beans?

          Spring beans 是那些形成Spring应用的主干的java对象。它们被Spring IOC容器初始化,装配,和管理。这些beans通过容器中配置的元数据创建。比如,以XML文件中<bean/> 的形式定义。

          Spring 框架定义的beans都是单件beans。在bean tag中有个属性”singleton”,如果它被赋为TRUE,bean 就是单件,否则就是一个 prototype bean。默认是TRUE,所以所有在Spring框架中的beans 缺省都是单件。

    11、Bean 工厂和 Application contexts 有什么区别?

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

    12、解释对象/关系映射集成模块

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

    13、解释JDBC抽象和DAO模块。

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

    14、解释AOP模块

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

    15、什么是依赖注入(DI)

        我们在使用Spring容器的时候,容器通过调用set方法或者是构造器来建立对象之间的依赖关系。

         控制反转是目标,依赖注入是我们实现控制反转的一种手段

    16、什么叫延迟加载?

    • 默认情况下,容器启动之后会将所有作用域为单例的bean创建好;但是有的业务场景我们并不需要它提前都创建好;
    • 此时,我们可以在bean中设置lzay-init="true",这样,当容器启动之后,作用域为单例的bean,就不在创建。

    17、Spring中都用到了那些设计模式?

    • 代理模式:在AOP中被使用最多
    • 单例模式:在Spring配置文件中定义bean的时候默认的是单例模式
    • 工厂模式:BeanFactory用来创建对象的实例
    • 模板方法:用来解决重复性代码
    • 前端控制器:Spring提供了DispatcherSerclet来对请求进行分发
    • 视图帮助:Spring提供了一系列的JSP标签
    • 依赖注入:它是惯穿于BeanFactory/ApplicationContext接口的核心理念、

    18、什么是SpringMVC

    • Spring MVC是一个基于MVC架构的用来简化web应用程序开发的应用开发框架,它是Spring的一部分,它和Struts2一样都属于表现层的框架。
    • MVC(Model模型 View 视图 Controller 控制器):这是一种软件架构思想,是一种开发模式,将软件划分为三种不同类型的模块,分别是模型,视图,和控制器。 模型:用于封装业务逻辑处理(java类); 视图:用于数据展现和操作界面(Servlet); 控制器:用于协调视图和模型(jsp); 处理流程:视图将请求发送给控制器,由控制器选择对应的模型来处理;模型将处理结果交给控制器,控制器选择合适的视图来展现处理结果;

            

    19、Spring MVC的五大组键 ?

    • 前端控制器 (DispatcherServlet)
    • 映射处理器(HandlerMapping)
    • 处理器(Controller)
    • 模型和视图(ModelAndView)
    • 视图解析器(ViewResolver)

    20、Spring MVC怎么设置重定向和转发

    • 再返回值的前面加“forword”,就可以实现让结果转发;
    • 在返回值的时候前面加“redirect”,就可以让返回值重定向

     

  • 相关阅读:
    nginx简介(轻量级开源高并发web服务器:大陆使用者百度、京东、新浪、网易、腾讯、淘宝等)(并发量5w)(一般网站apache够用了,而且稳定)
    js中json数据简单处理(JSON.parse()和js中嵌套html)
    js中json法创建对象(json里面的:相当于js里面的=)
    SimpleDateFormat使用特定的解释
    eclipse+webservice开发实例
    android在Canvas使用drawBitmap画一幅画
    SoC嵌入式软件架构设计II:没有MMU的CPU虚拟内存管理的设计和实现方法
    SRM 590 DIV1
    菜鸟教程工具(三)——Maven自己主动部署Tomcat
    activity-alias使用
  • 原文地址:https://www.cnblogs.com/easyjie/p/12038491.html
Copyright © 2020-2023  润新知