spring常见面试问题_Spring面试问题

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可以很容易地与Struts等其他MVC框架集成,但是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)有哪些不同类型的Autowire类型?

回答:

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

    • 按名字
    • 按类型
    • 构造函数
    • 自动侦测

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);

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

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

spring常见面试问题

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

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

相关文章

matlab谱系聚类图,如何看懂SPSS聚类分析的树状图/谱系图?

原创&#xff1a; 数据小兵 SPSS统计训练营SPSS聚类分析提供两种类别图形的输出&#xff0c;第一种是软件默认的“冰柱图”&#xff0c;形状类似于冬天屋檐上垂下的冰柱&#xff0c;因此得名。第二种是“树状图”&#xff0c;在新版本软件中也称谱系图&#xff0c;像一个横着生…

Java常用类(1)--字符串相关类String、StringBuffer、StringBuilder全面知识

文章目录String类StringBuffer类StringBuilder类String&#xff1a;不可变的字符序列&#xff1b;底层使用char[]存储 StringBuffer&#xff1a;可变的字符序列&#xff1b;线程安全的&#xff0c;效率低&#xff1b;底层使用char[]存储 StringBuilder&#xff1a;可变的字符序…

hybbs接口php,HYBBS

#HYBBS官方地址: http://bbs.hyyyp.com论坛基于HYPHP框架开发MVC结构支持HOOK机制PDO操作SQL,支持众多数据库论坛特性服务器环境要求:支持子目录安装论坛PHP 5.3 包括5.3 , 5.3以上环境Apache || Nginx || IIS需要开启伪静态,否则无法安装~!数据库支持 : MYSQL , MSSQL ,Oracle…

Java常用类(2)--日期时间相关类Date、Calendar、LocalDateTime、Instant全面

文章目录java.lang.System类java.util.Date类java.sql.Date类java.text.SimpleDateFormat类java.util.Calendar(日历)类java.time类java.time.Instant类java.time.format.DateTimeFormatter 类其它APIjava.lang.System类 System类提供的public static long currentTimeMillis(…

apache camel_Apache Camel简介

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

Angular5 JWT身份验证(Spring Boot安全性)

欢迎使用带有Spring Security的angular5 jwt身份验证。在本教程中&#xff0c;我们将在一个angular5单页应用程序中使用jwt身份验证创建一个完整的堆栈应用程序&#xff0c;该应用程序具有由spring boot支持并集成了spring security的后备服务器。带有集成了HttpInterceptor的示…

Java常用类(4)--System类

System类代表系统&#xff0c;系统级的很多属性和控制方法都放置在该类的内部&#xff0c;该类位于java.lang包。 由于该类的构造器是private的&#xff0c;所以无法创建该类的对象&#xff0c;也就是无法实例化该类。其内部的成员变量和成员方法都是static的&#xff0c;可以…

Java常用类(5)--不可变的任意精度BigInteger、BigDecimal类

文章目录BigInteger类BigDecimal类BigInteger类 Integer类作为int的包装类&#xff0c;能存储的最大整型值为2^31-1&#xff0c;Long类也是有限的&#xff0c; 最大为2^63-1。如果要表示再大的整数&#xff0c;不管是基本数据类型还是他们的包装类 都无能为力。 java.math包的…

Java枚举类(1)--枚举类的定义、方法使用和接口实现

文章目录枚举类的理解枚举类的定义Enum类的主要方法枚举类实现接口枚举类的理解 当类的对象只有有限个&#xff0c;且确定的&#xff0c;称此类为枚举类。 当需要定义一组常量时&#xff0c;强烈建议使用枚举类。 如果枚举类中只有一个对象&#xff0c;则可以作为单例模式的…

java备忘录_Java 8备忘单中的可选

java备忘录Java 8 java.util.Optional<T>是scala.Option[T]和Data.Maybe在Haskell中的较差表亲。 但这并不意味着它没有用。 如果您不熟悉此概念&#xff0c;请将Optional想象为可能包含或不包含某些值的容器。 就像Java中的所有引用都可以指向某个对象或为null &#xf…

IDEA中注解注释快捷键及模板

前些天发现了十分不错的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;没有广告&#xff0c;分享给大家&#xff0c;大家可以自行看看。&#xff08;点击跳转人工智能学习资料&#xff09; 文章目录单行注释多行注释文档注释(块注释)方法说明注解自动注…

让别人和自己看懂自己的程序代码?一文掌握Java单行多行、文档注释以及注解(Annotation)超详细的理解使用,IDEA注释注解快捷键和模板,提高程序代码更有可读性

文章目录单行和多行注释文档注释&#xff08;Java特有&#xff09;Annotation(注解)的理解常见的Annotation示例IDEA注释注解快捷键及模板自定义 AnnotationJDK 中的元注解单行和多行注释 注释的内容不参与编译&#xff0c;即编译以后的.class的字节码文件中不包含注释的内容。…

Java集合(1)--集合概述

Java 集合可分为 Collection 和 Map 两种体系 Collection接口&#xff1a;单列数据&#xff0c;定义了存取一组对象的方法的集合 ——List&#xff1a;元素有序、可重复的集合 ——Set&#xff1a;元素无序、不可重复的集合 Map接口&#xff1a;双列数据&#xff0c;保存具有…

win7下oracle10g安装,专门针对win7下oracle10g安装的详解

Window 7 下面安装Oracle 10g今在win7下安装oracle 10g client的时候遇到下面问题&#xff1a;在执行先决条件的时候&#xff0c;报目前只支持6.0的版本&#xff0c;修改oraparam.ini文件中的以下内容&#xff1a;[Certified Versions]#You can customise error message shown …

Java集合(3)--Iterator迭代器

Iterator对象称为迭代器(设计模式的一种)&#xff0c;主要用于遍历 Collection 集合中的元素。Collection接口继承了java.lang.Iterable接口&#xff0c;该接口有一个iterator()方法&#xff0c;那么所有实现了Collection接口的集合类都有一个iterator()方法&#xff0c;用以返…

Java集合(4)--List接口及其实现类ArrayList、LinkedList和Vector

文章目录List接口概述List接口常用方法ArrayList实现类LinkedList实现类Vector实现类List接口概述 List集合类中元素有序、且可重复&#xff0c;集合中的每个元素都有其对应的顺序索引 List容器中的元素都对应一个整数型的序号记载其在容器中的位置&#xff0c;可以根据 序号…

java hadoop_单元测试Java Hadoop作业

java hadoop在我以前的文章中&#xff0c;我展示了如何设置一个完整的基于Maven的项目&#xff0c;以用Java创建Hadoop作业。 当然并没有完成&#xff0c;因为它缺少单元测试部分。 在这篇文章中&#xff0c;我将展示如何将MapReduce单元测试添加到我之前开始的项目中。 对于单…

软件连接oracle失败怎么办,【编程开发工具】navicat连接oracle失败怎么办

Navicat连接oracle数据库时连接失败&#xff0c;出现ORA-28547错误。原因&#xff1a;navicat Primium版本的OCi和本地数据库的OCI版本不一致。解决方法&#xff1a;1、把navicat Primium版本自带oci.dll替换本地Oracle安装路径里的oci.dll。我的本地navicat Primium版本自带oc…

Java集合(5)--Set接口及其实现类HashSet、LinkedHashSet和TreeSet

文章目录Set接口概述HashSet实现类LinkedHashSet实现类TreeSet实现类Set接口概述 1、Set接口是Collection的子接口&#xff0c;set接口没有定义额外的方法&#xff0c;使用的都是Collection接口中的方法。 2、Set 集合不允许包含相同的元素&#xff0c;如果试把两个相同的元素…

Java集合(6)--Map接口

文章目录Map接口概述Map结构的理解Map接口常用方法Map接口概述 Map与Collection并列存在&#xff0c;用于保存具有映射关系的数据:key-value Map中的 key 和 value 都可以是任何引用类型的数据 常用String类作为Map的“键”。key 和 value 之间存在单向一对一关系&#xff0…