面试总结关于Spring面试问题(精选)
1、什么是Spring?
Spring是一个反转控制IOC和AOP的开发框架和平台。
2、解释一下Spring?
- 轻量 : Spring 在大小和透明度上是轻量的,Spring基本核心版本大概只有1M,处理开销也非常小
- 反转控制Inversion of control (IoC) : Spring使用IOC实现松耦合,对象不是自己主动去寻找依赖而是依赖主动推给了自己。
- 面向方面(AOP) : Spring支持面向方面编程,从业务逻辑中分离关注,能够实现聚焦开发。.
- 容器 : Spring 容器包含和管理应用对象的生命周期。
- 框架 : Spring提供最内核的功能,其余留给开发者自己开发。
3、Spring框架有哪些不同的模块?
- 核心容器模块
- 应用上下文模块Application context
- AOP模块
- JDBC抽象和DAO模块
- O/R映射整合模块
- Web 模块
- MVC 框架模块
4、Spring框架的结构如何?
5、什么是核心容器模块?
提供基本功能的Spring框架。在此模块中的BeanFactory是任何基于Spring的应用程序的心脏。整个框架是建立在本模块的基础之上。该模块生成Spring容器。
6、什么是应用上下文Application context模块?
应用程序上下文模块使得Spring成为了一个框架。该模块扩展了BeanFactory的概念,国际化(I18N)消息,应用程序生命周期事件,和验证提供支持。此模块还提供了许多的企业服务,例如JNDI访问,EJB集成,远程和调度。它还提供了其他框架的支持。
7、什么是AOP模块?
该AOP模块用于Spring的应用程序开发方面。提供了大部分AOP联盟的支持,以确保Spring和其它AOP框架之间的互操作性。此模块还引入元数据编程。使用Spring的元数据支持我们的源代码 ,通过引入元注释,指导我们具体在哪里实现方面编程。
8、什么是JDBC和DAO抽象模块?
使用这个模块,我们可以保持干净和简单的数据库的代码,并防止失败关闭数据库资源等问题。基于多个数据库服务器的出错信息之上建立的一个新的有意义的异常层。此外,该模块使用Spring的AOP模块实现事务管理。
9、什么是对象关系数据库映射整合模块?
Spring支持使用一个对象/关系映射(ORM)工具,基于JDBC提供ORM模块。配合一些流行的ORM框架,包括Hibernate,JDO和iBATIS SQL映射。 Spring的事务管理也支持这些ORM框架以及JDBC。
10、什么是Web模块?
该模块是建立在应用上下文模块之上,提供了一个基于Web应用的上下文。此模块还包含几个面向Web的任务,比如多个文件上传和将请求参数透明地绑定到你的业务对象。它也包含与Jakarta Struts的集成支持。
11、什么是SpringMVC?
Spring提供了一个全功能的构建Web应用程序的MVC框架。虽然Spring可以很容易地集成到其他的MVC框架,如Struts,Spring的MVC框架使用IOC将控制器逻辑从业务对象中干净分离。它还允许您以声明方式绑定请求参数到你的业务对象。它还可以利用Spring的其他服务,如本地化消息和验证。
12、什么是BeanFactory?
一个BeanFactory是工厂模式的实现,使用反转控制将从应用程序的配置和依赖性从应用程序代码中分离。
13、什么AOP联盟?
AOP联盟是一个开放源码的项目,其目标是通过定义一套通用的接口和组件在不同的AOP产品中实现AOP和互操作性推广。
14、什么是Spring配置文件?
Spring的配置文件是一个XML文件。此文件中包含的类信息,并描述这些类是如何配置,并实现相互的依赖导入。
15、一个简单的Spring应用程序包括什么?
这些应用程序像任何Java应用程序。它们是由多个类组成,每个类执行应用程序内的一个特定的功能。这些类的配置是通过一个XML文件向对方导入依赖。此XML文件描述如何配置类,称为Spring配置文件。
16、什么是 XMLBeanFactory?
BeanFactory有很多实现,org.springframework.beans.factory.xml.XmlBeanFactory是其中有用常用的,它基于XML中定义加载Bean,为了创建一个 XmlBeanFactory对象, 需要将一个 java.io.InputStream传给他的构造器。InputStream 提供XML文件的读取。
BeanFactory factory = new XmlBeanFactory(new FileInputStream("beans.xml"));
MyBean myBean = (MyBean) factory.getBean(“myBean”);
17、Spring中ApplicationContext的重要实现是什么?
- ClassPathXmlApplicationContext – 这个上下文是从规定的Class路径中加载一个XML资源。
- FileSystemXmlApplicationContext – 从文件系统中加载一个XML文件。
- XmlWebApplicationContext – 从一个Web应用中加载一个XML。
18、解释一下Bean的生命周期?
- Spring容器从XML中发现一个Bean的定义,然后初始化创建它们
- 使用依赖注入,Spring将这个Bean中需要的属性进行导入。
- 如果这个Bean实现 BeanNameAware 接口, 工厂将调用setBeanName() 传递Bean的ID。
- 如果bean实现BeanFactoryAware,工厂将调用 setBeanFactory(), 将自己的实例传给它。
- 如果这个bean有 BeanPostProcessors 关联,他们的post- ProcessBeforeInitialization()方法将被调用。
- 如果这个Bean有一个初始init方法,它将被调用。
- 最后,如果有关联对象 BeanPostProcessors ,postProcessAfterInitialization()方法将被调用。
19、什么是Beand wiring?
将Bean结合在一起是wiring. 容器将把标注wiring需要的依赖对象注入到其中,将它们绑定在一起。
20、在Spring中如何加入一个Bean?
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><bean id="foo" class="com.act.Foo"/><bean id="bar" class="com.act.Bar"/></beans>
21、什么是单例Bean 如何创建一个原型Bean?
将Singleton设置为false,缺省它是true。
<beans><bean id="bar" class="com.act.Foo" singleton="false"/></beans>
22、bean最重要的生命周期方法是什么?
有两个重要的bean的生命周期方法。第一个当bean时加载到容器时设置调用。第二种方法是bean从容器中卸载时被调用。
23、如何覆盖Bean生命周期方法?
<beans><bean id="bar" class="com.act.Foo" init-method="fooSetup" destroy="fooTeardown"/></beans>
24、什么是内部inner Bean?
当wiring一个Bean时,如果一个bean元素被嵌入到一个属性中,这个Bean就是内部bean。缺点是,它不能重复使用其他地方。
写在最后:欢迎留言讨论,私信“Java”或“架构资料”有惊喜!加关注,持续更新!!!
面试总结关于Spring面试问题(精选)的更多相关文章
- spring面试问题与答案集锦
我收集了一些spring面试的问题,这些问题可能会在下一次技术面试中遇到.对于其他spring模块,我将单独分享面试问题和答案. 如果你能将在以前面试中碰到的,且你认为这些应该是一个有spring经验 ...
- 面试常问Spring IOC,不得不会。
广义的 IOC IoC(Inversion of Control) 控制反转,即“不用打电话过来,我们会打给你”. 两种实现: 依赖查找(DL)和依赖注入(DI). IOC 和 DI .DL 的关系( ...
- Spring 面试问题 TOP 50
Spring 面试问题 TOP 50 Spring Framework 现在几乎已成为 Java Web 开发的标配框架.那么,作为 Java 程序员,你对 Spring 的主要技术点又掌握了多少呢? ...
- spring面试相关点
刚刚开通博客,因为最近在进行各种面试,遇到各种面试问题,用这个机会整理几篇文章方便日后需要 springmvc 和springboot spring boot只是一个配置工具,整合工具,辅助工具. s ...
- Spring面试总结
Spring面试总结 文件夹(?)[+] 1.什么是spring框架?Spring框架有哪些主要模块? Spring框架是一个为Java应用程序的开发提供了综合.广泛的基础性支持的Java平台.Spr ...
- 超详细的阿里字节Spring面试技术点总结(建议收藏)
前言 Spring作为现在最流行Java开发技术,其内部源码设计非常优秀. Spring这个词对于Java开发者想必不会陌生,可能你每天都在使用Spring,享受着Spring生态提供的服务.现在很多 ...
- Android开发面试经——6.常见面试官提问Android题②(更新中...)
版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客:http://blog.csdn.net/fi ...
- Android开发面试经——5.常见面试官提问Android题①
版权声明:本文为寻梦-finddreams原创文章,请关注:http://blog.csdn.net/finddreams 关注finddreams博客: http://blog.csdn.net/f ...
- 一名十年Java程序员回忆阿里面试经历——揭开阿里面试的“遮羞布”
阿里面试经历 去阿里面试可以说非常非常的偶然和戏剧性,因为本人根本没投简历,以至于阿里hr给我电话的时候我一度认为是诈骗电话.因为深圳这家公司不错我还想在这里干个两年左右再考虑考虑. 这个时候的本人已 ...
随机推荐
- SQLite 的简单使用
程序运行结果如下 : 输入name和age,点击"确认插入"按钮,即插入一条记录到数据库. 程序代码如下:(有详细注释,相信大家都看得懂哈!!!) //// ViewContro ...
- Linux使用shell解压tar.Z格式文件
建设当前目录下有一个名为test.tar.Z的文件. 使用如下指令可以将其解压,并将解压后的所有文件放置在当前目录下: zcat test.tar.Z | tar -xvf - 如果想要将解压缩的文件 ...
- 金仓Kingbase数据库网页数据维护分析工具
金仓Kingbase是优秀的国产数据库产品,在能源,政务,国防等领域广泛使用, 现在TreeSoft数据库管理系统已支持Kingbase了,直接在浏览器中就可以操作查看Kingbase数据了,十分方便 ...
- redcon, Redis兼容的服务器框架
源代码名称:redcon 源代码网址:http://www.github.com/tidwall/redcon redcon源代码文档 redcon源代码下载 Git URL: 复制代码 git:// ...
- php 阿里云国内短信实例
调用:先去阿里云申请短信服务 $smsArr = array( "accessKeyId" => "", // key "accessKeySe ...
- 20175316盛茂淞 2018-2019-2 《Java程序设计》第11周学习总结
20175316 <Java程序设计> 第11周学习总结 教材内容学习总结 第十三章 URL类 URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符,使用UR ...
- docker管理工具lazydocker
docker管理工具lazydocker 简介 这是一个为了能再终端中更方便管理docker的工具 项目地址 https://github.com/jesseduffield/lazydocker 安 ...
- mssql sqlserver时间戳与时间格式互相转换的方法分享
转自: http://www.maomao365.com/?p=9336 摘要: 下文讲述mssql中时间戳和时间格式的转换方法,如下所示: 实验环境:sql server 2008 R2 时间戳简介 ...
- 解决maven项目无法读取src/main/java目录下面的配置文件问题
我们在用Mybatis去操作底层数据库的时候,需要用到xml配置文件,一般我们是把配置文件和dao放置在同一层目录. 但是在用idea操作maven项目的时候,我们可能会遇到无法读取到dao对应的ma ...
- rm 参数列表过长
刚摸索了一个小技巧,有时候在删除文件的时候,文件很多,直接用rm -rf * ,会报错误“rm 参数列表过长”. 这时候网上的办法一般都是通过类似的办法:find . -name "&quo ...