Spring面试问题

还可以查看我们最新的文章69Spring面试问答-最终名单 。

1)什么是春天?

回答:

Spring是控件和面向方面的容器框架的轻量级转换。

2)解释春天?

回答:

  • 轻巧:在尺寸和透明度方面, Spring是轻巧的。 spring框架的基本版本约为1MB。 而且处理开销也可以忽略不计。
  • 控制反转(IoC):使用控制反转技术在弹簧中实现松耦合。 对象提供其依赖关系,而不是创建或寻找依赖对象。
  • 面向方面(AOP): Spring支持面向方面的编程,并通过将应用程序业务逻辑与系统服务分开来实现紧密的开发。
  • 容器: Spring包含并管理应用程序对象的生命周期和配置。
  • 框架: Spring提供了大多数内部功能,其余的代码留给了开发人员。

3)Spring框架有哪些不同的模块?

回答:

  • 核心容器模块
  • 应用程序上下文模块
  • AOP模块(面向方面​​的编程)
  • JDBC抽象和DAO模块
  • O / R映射集成模块(对象/关系)
  • 网络模块
  • MVC框架模块

4)Spring框架的结构是什么?

回答:

弹簧结构

5)什么是核心容器模块?

回答:

该模块提供了spring框架的基本功能。 在这个模块中, BeanFactory是任何基于Spring的应用程序的核心。 整个框架都建立在该模块的顶部。 这个模块是Spring容器

6)什么是应用程序上下文模块?

回答:

Application上下文模块使spring成为框架。 该模块扩展了BeanFactory的概念,为国际化(I18N)消息,应用程序生命周期事件和验证提供支持。 该模块还提供许多企业服务,例如JNDI访问, EJB集成 ,远程处理和调度。 它还为其他框架提供支持。

7)什么是AOP模块?

回答:

AOP模块用于为支持Spring的应用程序开发方面。 AOP联盟已经提供了很多支持,以确保Spring和其他AOP框架之间的互操作性。 该模块还向Spring介绍了元数据编程。 使用Spring的元数据支持,我们将能够在源代码中添加注释,以指示Spring在何处以及如何应用方面。

8)什么是JDBC抽象和DAO模块?

回答:

使用此模块,我们可以使数据库代码保持简洁明了,并防止由于关闭数据库资源失败而导致的问题。 在此模块中,购买了由多个数据库服务器给出的错误消息之上的有意义异常的新层。 另外,该模块使用Spring的AOP模块为Spring应用程序中的对象提供事务管理服务。

9)什么是对象/关系映射集成模块?

回答:

通过提供ORM模块,Spring还支持在纯JDBC上使用对象/关系映射(ORM)工具。 Spring提供的支持可以绑定到几个流行的ORM框架 ,包括HibernateJDOiBATIS SQL Maps 。 Spring的事务管理支持所有这些ORM框架以及JDBC

10)什么是Web模块?

回答:

此模块建立在应用程序上下文模块的基础上,提供适用于基于Web的应用程序的上下文。 该模块还包含对一些面向Web的任务的支持,例如透明地处理文件上传的多部分请求以及将请求参数以编程方式绑定到业务对象。 它还包含与Jakarta Struts的集成支持。

11)什么是Spring MVC?

回答:

Spring带有用于构建Web应用程序的功能齐全的MVC框架。 尽管Spring可以轻松地与其他MVC框架(例如Struts)集成,但是Spring的MVC框架使用IoC可以将控制器逻辑与业务对象完全分离。 它还允许您以声明方式将请求参数绑定到业务对象。 它还可以利用Spring的任何其他服务,例如I18N消息传递和验证。

12)什么是BeanFactory?

回答:

BeanFactory是工厂模式的实现,该模式应用控制反转将应用程序的配置和依赖项与实际应用程序代码分开。

13)什么是AOP联盟?

回答:

AOP联盟是一个开源项目,其目标是通过定义一组通用的接口和组件来促进AOP的采用以及不同AOP实现之间的互操作性。

14)什么是Spring配置文件?

回答:

Spring配置文件是一个XML文件。 该文件包含类信息,并描述如何配置这些类以及如何将它们相互引入。

15)一个简单的spring应用程序包含什么?

回答:

这些应用程序就像任何Java应用程序一样。 它们由几个类组成,每个类在应用程序中执行特定的目的。 但是这些类是通过XML文件配置并相互引入的。 这个XML文件描述了如何配置这些类,称为Spring配置文件。

16)什么是XMLBeanFactory?

回答:

BeanFactory在Spring中有很多实现。 但是,最有用的工具之一是org.springframework.beans.factory.xml.XmlBeanFactory ,它根据XML文件中包含的定义加载其bean。 要创建XmlBeanFactory ,请将java.io.InputStream传递给构造函数。 InputStream将向工厂提供XML。 例如,以下代码片段使用java.io。 FileInputStreamXmlBeanFactory提供bean定义XML文件。

BeanFactory factory =新的XmlBeanFactory (新的FileInputStream (“ beans.xml”));

要从BeanFactory中检索Bean,请通过传递要检索的Bean的名称来调用getBean()方法。

MyBean myBean =(MyBean)工厂。 getBean (“ myBean”);

17)Spring框架中有哪些重要的ApplicationContext实现?

回答:

  • ClassPathXmlApplicationContext –此上下文从位于类路径中的XML文件中加载上下文定义,将上下文定义文件视为类路径资源。
  • FileSystemXmlApplicationContext –此上下文从文件系统中的XML文件加载上下文定义。
  • XmlWebApplicationContext –此上下文从Web应用程序中包含的XML文件中加载上下文定义。

18)解释Spring框架中的Bean生命周期?

回答:

  1. spring容器从XML文件中找到bean的定义并实例化bean。
  2. 使用依赖注入,spring填充了bean定义中指定的所有属性。
  3. 如果Bean实现BeanNameAware接口,则工厂将通过该Bean的ID调用setBeanName()
  4. 如果Bean实现BeanFactoryAware接口,则工厂调用setBeanFactory() ,并传递其自身的实例。
  5. 如果有任何与Bean关联的BeanPostProcessor ,则将调用其postProcessBeforeInitialization()方法。
  6. 如果为bean指定了初始化方法,它将被调用。
  7. 最后,如果有任何与Bean关联的BeanPostProcessor ,则将调用其postProcessAfterInitialization()方法。

19)什么是豆类接线?

回答:

在Spring容器中将bean组合在一起被称为bean接线或接线。 在对bean进行接线时,应告诉容器需要哪些bean,以及如何使用依赖注入将它们绑定在一起。

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>

在bean标记中,id属性指定bean名称,而class属性指定完全限定的类名。

21)什么是单例bean,如何创建原型bean?

回答:

Spring框架中定义的Bean是单例Bean。 如果指定为true,则bean标记中有一个名为“ singleton”的属性,则bean成为单例;如果设置为false,则bean成为原型bean。 默认情况下,它设置为true。 因此,默认情况下,spring框架中的所有bean都是单例bean。

<beans><bean id="bar" class="com.act.Foo" singleton=”false”/></beans>

22)重要的bean生命周期方法是什么?

回答:

bean有两种重要的生命周期方法。 第一个是安装程序,当将Bean装入容器时调用。 第二种方法是拆卸方法,当从容器中卸载bean时会调用该方法。

23)如何覆盖bean的默认生命周期方法?

回答:

bean标记具有两个更重要的属性,您可以使用它们定义自己的自定义初始化和销毁​​方法。 在这里,我展示了一个小示范。 两个新方法fooSetup和fooTeardown将添加到Foo类。

<beans><bean id="bar" class="com.act.Foo" init-method=”fooSetup” destroy=”fooTeardown”/></beans>

24)什么是内豆?

回答:

在对bean进行布线时,如果将bean元素直接嵌入到属性标签中,则该bean被称为Inner Bean。 该bean的缺点是无法在其他任何地方重用。

25)豆类注射有哪些不同类型?

回答:

有两种类型的豆类注射。

  1. 通过二传手
  2. 按构造函数

26)什么是自动接线?

回答:

您可以根据需要为咖啡豆接线。 但是spring框架也可以为您完成这项工作。 它可以自动将相关的bean连接在一起。 您所要做的只是将bean标签的autowire属性设置为autowire类型。

<beans><bean id="bar" class="com.act.Foo" Autowire=”autowire type”/></beans>

27)有哪些不同类型的自动接线?

回答:

可以通过四种不同类型进行自动装配。

    • 按名字
    • 按类型
    • 建设者
    • 自动侦测

28)与侦听器相关的事件有哪些不同类型?

回答:

有很多与spring框架的ApplicationContext相关的事件。 所有事件都是org.springframework.context.Application-Event的子类。 他们是

  • ContextClosedEvent –在关闭上下文时触发。
  • ContextRefreshedEvent –在初始化或刷新上下文时触发。
  • RequestHandledEvent –当Web上下文处理任何请求时将触发此事件。

29)什么是方面?

回答:

一个方面是您正在实现的跨领域功能。 这是模块化应用程序的一个方面。 方面的一个示例是日志记录。 记录是整个应用程序所必需的。 但是,由于应用程序倾向于基于功能分解为多个层,因此通过继承重用日志记录模块没有任何意义。 但是,您可以创建一个日志记录方面,并使用AOP在整个应用程序中应用它。

30)什么是联合点?

回答:

连接点是应用程序执行过程中可以插入方面的点。此点可以是调用方法,引发异常或什至修改字段。 这些就是您的方面的代码可以插入到应用程序的常规流程中以添加新行为的要点。

31)什么是建议?

回答:

咨询是一个方面的实施。 这就像告诉您的应用新行为。 通常,建议在连接点处插入到应用程序中。

32)什么是切入点?

回答:

切入点是定义建议应在哪些连接点应用的东西。 可以在AOP框架支持的任何连接点上应用建议。 这些切入点允许您指定可以在何处应用建议。

33)什么是AOP简介?

回答:

简介允许用户向现有的类中添加新的方法或属性。 然后可以将其引入到现有的类中,而不必更改类的结构,而是为他们提供新的行为和状态。

34)什么是目标?

回答:

目标是正在建议的班级。 该类可以是第三方类,也可以是您要向其添加自定义行为的您自己的类。 通过使用AOP的概念,目标类可以将注意力集中在主要关注点上,而无需意识到正在应用的任何建议。

35)什么是代理?

回答:

代理是在将建议应用于目标对象之后创建的对象。 当您想到客户端对象时,目标对象和代理对象是相同的。

36)编织是什么意思?

回答:

将方面应用于目标对象以创建新的代理对象的过程称为编织。 这些方面将在指定的连接点处编织到目标对象中。

37)编织的不同点是什么?

回答:

  • 编译时间
  • 上课时间
  • 运行

38)Spring有哪些不同的建议类型?

回答:

  • 周围:拦截对目标方法的调用
  • Before:在调用目标方法之前调用
  • After:返回目标方法后调用
  • 抛出:目标方法抛出异常时调用
  • 周围:org.aopalliance.intercept.MethodInterceptor
  • 之前:org.springframework.aop.BeforeAdvice
  • 之后:org.springframework.aop.AfterReturningAdvice
  • 抛出:org.springframework.aop.ThrowsAdvice

39)有哪些不同类型的自动代理?

回答:

  • BeanNameAutoProxyCreator
  • DefaultAdvisorAutoProxyCreator
  • 元数据自动代理

40)与Spring应用程序中引发的所有异常相关的Exception类是什么?

回答:

DataAccessException – org.springframework.dao.DataAccessException

41)那些SpringDAO类会抛出什么样的异常?

回答:

spring的DAO类不会引发任何与技术相关的异常,例如SQLException。 他们抛出异常,这些异常是DataAccessException的子类。

42)什么是DataAccessException?

回答:

DataAccessException是RuntimeException。 这是一个未经检查的异常。 不会强迫用户处理此类异常。

43)如何配置Bean以从JNDI获取数据源?

回答:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"><property name="jndiName"><value>java:comp/env/jdbc/myDatasource</value></property></bean>

44)如何创建数据源连接池?

回答:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driver"><value>${db.driver}</value></property><property name="url"><value>${db.url}</value></property><property name="username"><value>${db.username}</value></property><property name="password"><value>${db.password}</value></property></bean>

45)如何在Spring框架中更有效地使用JDBC?

回答:

在spring框架提供的名为JdbcTemplate的模板类的帮助下,可以更有效地使用JDBC。

46)如何使用JdbcTemplate?

回答:

通过使用Spring JDBC框架,资源管理和错误处理的负担大大减轻了。 因此,它使开发人员可以编写语句和查询以将数据往返数据库。

JdbcTemplate模板=新的JdbcTemplate (myDataSource);

一个简单的DAO类如下所示。

public class StudentDaoJdbc implements StudentDao {private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}more..}

配置如下所示。

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource"><ref bean="dataSource"/></property></bean><bean id="studentDao" class="StudentDaoJdbc"><property name="jdbcTemplate"><ref bean="jdbcTemplate"/></property></bean><bean id="courseDao" class="CourseDaoJdbc"><property name="jdbcTemplate"><ref bean="jdbcTemplate"/></property></bean>

47)如何在Spring使用JdbcTemplate将数据写入后端?

回答:

在将数据写入数据库时​​,JdbcTemplate使用其中一些回调。 您将在这些接口中找到的有用性会有所不同。 有两个简单的界面。 一个是PreparedStatementCreator ,另一个是BatchPreparedStatementSetter

48)解释PreparedStatementCreator吗?

回答:

PreparedStatementCreator是用于将数据写入数据库的最常用接口之一。 该接口具有一种方法createPreparedStatement()。

PreparedStatement createPreparedStatement (连接conn)

抛出SQLException;

实施此接口后,我们应该从Connection参数创建并返回PreparedStatement,并且自动处理异常。 当实现此接口时,还将实现另一个接口SqlProvider ,该接口具有一个称为getSql()的方法,该方法用于向JdbcTemplate提供sql字符串。

49)解释BatchPreparedStatementSetter吗?

回答:

如果用户一次要更新多行内容,则可以使用BatchPreparedStatementSetter 。 该接口提供两种方法

setValues(PreparedStatement ps,int i)抛出SQLException;

int getBatchSize();

getBatchSize()告诉JdbcTemplate类创建多少个语句。 并且这还决定了setValues()会被调用多少次。

50)解释一下RowCallbackHandler以及为什么要使用它?

回答:

为了浏览记录,我们通常使用ResultSet。 但是spring提供了一个界面来处理所有的负担,让用户决定如何处理每一行。 spring提供的接口是RowCallbackHandler 。 有一个方法processRow()需要实现,以便它适用于每一行。

void processRow (java.sql.ResultSet rs);

参考资料:来自Sun的JCG合作伙伴 Sunil Gulabani在Sunil Gulabani博客上的Spring访谈问题 。

翻译自: https://www.javacodegeeks.com/2013/09/spring-interview-questions.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

201771010120 苏浪浪 《面向对象程序设计(java)》第二周学习总结

理论知识总结 第三章Java基本程序设计结构 1、基本知识&#xff1a;&#xff08;1&#xff09;标识符&#xff1a;是由字母、下划线、美元符号和数字组成&#xff0c;且第一个符号不能为数字。&#xff08;2&#xff09;关键字&#xff1a;剧啊语言中被赋予特定意义的一些单词。…

Apache Camel简介

Apache Camel是著名的企业集成模式的开源实现。 Camel是一个路由和中介引擎&#xff0c;可以帮助开发人员以各种领域特定语言&#xff08;DSL&#xff09;&#xff08;例如Java&#xff0c;Spring / XML&#xff0c;scala等&#xff09;创建路由和中介规则。 骆驼用途广泛 Cam…

qt结构体嵌套结构体方法_9.2 C++结构体类型变量

C定义结构体类型变量的方法 1、先声明结构体类型再定义变量名&#xff0c;在定义了结构体变量后&#xff0c;系统会为之分配内存单元。struct Student{ //自定义结构体变量int num;//学号char sex;//性别int age;//年龄};2、在声明类型的同时定义变量 一般形式为struct 结构体名…

Vue解析--如何应对面试官提问

近期不断面试中&#xff0c;面试官都会提一些关于Vue相关的源码和“全家桶”之类的问题。那么针对这些提问&#xff0c;我们应该如何更好应答呢&#xff1f;在这里我把对Vue的理解整理出来供大家来参考。 1.Vue是什么&#xff1f; Vue是一套构建用户界面的渐进式框架&#xf…

Java开发人员的Erlang

您可能没有注意到&#xff0c;但是距离我上次发布博客已经过去了几个星期。 原因是我的Soleus骨折了&#xff0c;而我的腿也石膏了。 不能动弹&#xff0c;我认为调查完全不同的东西是个好主意–要么看那天的电视&#xff0c;要么&#xff0c;尽管Kojak和Magnum PI的重播很诱人…

20165339第六周学习总结

课本知识点总结 第八章 String类 使用String类声明对象并创建对象 String s new String("We are students"); String t new String("We are students"); String (char a[])用一个字符数组a创建一个String对象 char a[] {J,a,v,a}; String s new String(a)…

keil5用jlink不到芯片_洛达芯片检测

安卓手机下载一个络达官方的刷机软件然后连接上耳机&#xff0c;打开软件&#xff0c;就可以看到耳机芯片的相关信息。软件下载地址&#xff1a;https://pan.baidu.com/s/1MOXjkHv1wfxWWIVdcsMSFg 提取码: tasc我们的耳机都是络达芯片&#xff0c;不怕你检测&#xff0c;希望用…

层次和约束:项目中使用vuex的3条优化方案

问题描述 使用vuex的store的过程中&#xff0c;发现了一些不是很优雅的地方&#xff1a; store层module太多&#xff0c;找state、getter、mutation、action对应的module比较慢。 组件里面mapGetters、mapActions、mapMutations过多&#xff0c;分不清getter、action、mutati…

怎么让员工服从管理_为什么现在的员工执行力和服从性越来越差,管理一严格就辞职?...

当有负面情绪的时候&#xff0c;不要说。管好自己的嘴&#xff0c;有时候做哑巴&#xff0c;是一种境界。现在的企业很多都存在这个问题&#xff0c;员工执行力越来越差&#xff0c;服从性也越来越差&#xff0c;管理者稍微一严格&#xff0c;员工就会辞职走人&#xff0c;留不…

Spring Data REST的实际应用

什么是春天数据休息&#xff1f; spring-data-rest是spring-data项目的新增功能&#xff0c;它是一个框架&#xff0c;可帮助您将实体直接作为RESTful Web服务端点公开。 与rails&#xff0c;grails或roo不同&#xff0c;它不会生成任何实现此目标的代码。 spring data-rest支持…

2018上半年掘金微信群日报优质文章合集:前端篇

在掘金微信交流群里的小伙伴们&#xff0c;你们每天都还在坚持读小报吗&#xff1f;如果你的回答是yes&#xff0c;那真的要给你点一万个赞了?能坚持这么久&#xff0c;真的很优秀噢&#xff01;&#xff08;嗯&#xff0c;每天坚持给大家收集文章的小饼也很优秀?&#xff09…

linux运维笔试题目,linux运维相关的笔试题目_笔试题目

一、Linux系统和shell1、写一个sed命令&#xff0c;修改/tmp/input.txt文件的内容&#xff0c;要求&#xff1a;①删除所有空行&#xff1b;②在非空行前面加一个“AAA”&#xff0c;在行尾加一个“BBB”&#xff0c;即将内容为“11111”的一行改为&#xff1a;“AAA11111BBB”…

python之路--day17-shelve,xml和re模块

shelve模块 shelve模块只有一个open函数&#xff0c;返回类似字典的对象&#xff0c;可读可写&#xff0c;key必须为字符串&#xff0c;而值可以是python所支持的数据类型 1 import shelve2 # info1{age:18,height:180,weight:80}3 # info2{age:73,height:150,weight:80}4 #5 #…

20172314 2018-2019-1《程序设计与数据结构》第一周学习总结

教材学习内容总结 概述 软件工程&#xff1a;是一门关于高质量软件开发的技术和理论的学科&#xff0c;用来控制开发过程&#xff0c;实现高质量的软件。软件工程的目标&#xff1a;正确性、可靠性、健壮性、可用性、可维护性、可重用性、可移植性、运行效率。 对于可靠性和健壮…

activiti api文档_【白银人机】Activiti 工作流从入门到入土:完整 hello world 大比拼(API 结合实例讲解)...

点击上方“好好学java”&#xff0c;选择“置顶”公众号重磅资源、干货&#xff0c;第一时间送达重磅推荐 ① 纯福利 | 公众号资源大汇总&#xff0c;一年才一次&#xff01;② 重磅&#xff01;&#xff01;2018年Java全套入门到进阶学习视频及项目实战③ 2018年java架构师学习…

前端解读控制反转(IOC)

前言 随着前端承担的职责越来越重&#xff0c;前端应用向着复杂化、规模化的方向发展。大型项目模块化是一种趋势&#xff0c;不可避免模块之间要相互依赖&#xff0c;此外还有很多第三方包。这样的话如何去管理这些繁杂的文件&#xff0c;是一个不可避免的话题。此时作为一种…

ASP.NET MVC传递参数(model), 如何保持TempData的持久性

一看到此标题&#xff0c;相信你也会。因为路由是可以从URL地址栏传过去的。但是Insus.NET不想在地址栏传递&#xff0c;还是一个条件是jQuery的Ajax进行POST的。Insus.NET不清楚别人是怎样处理的&#xff0c;但是这个让Insus.NET花上不少时间来解决。Insus.NET实现的方法也很简…

深度学习语音降噪方法对比_人工智能-关于深度学习的基础方法

深度学习概述深度学习的一些简介&#xff0c;其要点如下&#xff1a;深度学习实际上是基于具有多个隐藏层的神经网络的学习&#xff1b;深度学习的思想来源于人类处理视觉信息的方式&#xff1b;深度学习的发展得益于数据的井喷和计算力的飙升&#xff1b;深度学习的理论基础依…

通过adb巧用monkey获取android设备中所有应用的主activity

由于工作需要&#xff0c;想获取所有应用的activity(这里仅限应用的主入口Launcher activity)&#xff0c;搜索了一下&#xff0c;网上实现的方案都是基于android编程实现的&#xff0c;对于不懂开发的测试来说稍有难度&#xff0c;而且对于PC端测试工具来说可行性略差。 给大家…

PWA · 前后端协作 · Node | JTalk 掘金线下活动第七期

通知 余票仅剩 3张&#xff0c;欢迎加入活动群获取更多通知。北京的小伙伴可以关注我们的 JTalk 第八期&#xff1a;前端安全 | 美团点评技术团队专场 ? 报名 扫码报名&#xff1a; 报名链接&#xff1a;点我报名 ? 介绍 本期 JTalk 来杭州啦&#xff01; 掘金线下活动 J…