这里是由多位互联网大厂架构师面试整理的出现频率最高的spring相关面试题,并为大家整理了完整的答案,赶紧收藏起来吧!
接上文
Spring 数据访问57、Spring JDBC API中有哪些类?
JdbcTemplate
SimpleJdbcTemplate
NamedParameterJdbcTemplate
SimpleJdbcInsert
SimpleJdbcCall
58、如何在Spring框架中更高效地使用JDBC?使用SpringJDBC 框架,资源管理和错误处理的代价都会被减轻。所以开发者只需写statements 和 queries从数据存取数据,JDBC也可以在Spring框架提供的模板类的帮助下更有效地被使用,这个模板叫JdbcTemplate 。
59、JdbcTemplateJdbcTemplate 类提供了很多便利的方法解决诸如把数据库数据转变成基本数据类型或对象,执行写好的或可调用的数据库操作语句,提供自定义的数据错误处理。
60、如何通过spring JdbcTemplate获取数据?有两个接口可用于从数据库中获取数据:
ResultSetExtractor
RowMapper
61、NamedParameterJdbcTemplate的优点是什么?NamedParameterJdbcTemplate是基于spring提供的JDBCTemplate构建的,用于与数据库的底层交互。它可以将SQL查询参数作为键值对传递。因此,与索引或“?”相比,程序代码的可读性要高得多,因此可以作为更好的标识“?“”占位符方法。特别是在参数数目庞大的情况下,后者更难跟踪。
62、什么是SpringJDBCTemplate类以及如何使用它?JdbcTemplate类执行SQL查询、update语句和存储过程调用,对结果集执行迭代,并提取返回的参数值。它隐式处理资源的创建和释放,从而避免诸如忘记关闭连接之类的错误。它还捕获JDBC异常并进行包装。
63、 JDBC和Spring JDBC有什么区别?Spring JDBC在JDBC的顶层提供数据操作:
1、定义连接参数
2、打开连接
3、指定语句
4、准备并执行语句
5、设置循环以迭代结果(如果有)
6、操作每个迭代
7、处理任何异常
8、处理事务
9、关闭连接
64、Spring DAO支持Spring中对数据访问对象(DAO)的支持目的使人们更容易以一致的方式使用JDBC、Hibernate或JDO等数据访问技术。这使我们可以相当容易地在持久性技术之间切换,也可以不必担心捕捉每种技术特有的异常。
65、使用Spring访问Hibernate有哪些方式?有两种方式使用Spirng访问Hibernate。
使用Hibernate模板和回调进行控制反转。
扩展HibernateDAOSupport并应用AOP拦截器节点。
66、Spring支持的ORMSpring支持下面的ORM:
Hibernate
iBatis
JPA(Java持久化API)
TopLink
JDO (Java Data Objects)
OJB
67、如何使用HibernateDaoSupport集成Spring和Hibernate?用Spring的 SessionFactory 调用 LocalSessionFactory。集成过程分三步:
配置the Hibernate SessionFactory
继承HibernateDaoSupport实现一个DAO
在AOP支持的事务中装配
68、Spring支持的事务管理类型?编程式事务管理: 这意味你通过编程的方式管理事务,给你很大的灵活性,但是难维护。
声明式事务管理: 这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务。
69、Spring框架的事务管理有哪些优点?它提供了跨不同事务api(如JTA、JDBC、Hibernate、JPA和JDO)的一致编程模型。
它为编程事务管理提供了比JTA等许多复杂事务API更简单的API。
它支持声明式事务管理。
它很好地集成了Spring的各种数据访问抽象。
70、哪种事务管理类型更可取?大多数Spring框架的用户选择声明式事务管理,因为它对应用代码的影响最小,因此更符合一个无侵入的轻量级容器的思想。声明式事务管理要优于编程式事务管理,虽然比编程式事务管理(这种方式允许你通过代码控制事务)少了一点灵活性。
Spring AOP71、解释AOP面向切面编程,或AOP, 是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事务管理。
72、AOP有哪些优点?a.它是非侵入性的
你的service/domain类被切面通知,而无需在service/domain类中添加任何与spring aop相关的类或接口。
允许开发人员专注于业务代码,而不是切点。
b.它是用纯Java实现的
不需要特殊的编译单元或特殊的类加载器
c.它使用Spring的IOC进行依赖注入
切面可以配置为普通的spring bean。
d.与任何其他AOP框架一样,它将横切关注点编织到类中,而不从这些类中调用横切关注点。
e.集中或模块化横切关注点
易于维护和更改切面
改变需要在一处进行。
在你不希望有的类中有日志记录,可以通过修改相应切面(日志切面)中的切入点来轻松实现。所以你只需要在一个地方做出改变。
f.用于使用基于模式(XML配置)或@AspectJ基于注解的方式创建切面。
g.易于配置
73、AOP有哪些实现?AOP实现:
Spring AOP:
通过动态代理实现
它只支持方法级切入点
它是基于DTD的
Apache AspectJ:
通过aspectj java工具实现编译时编织,是通过静态代理实现的
它支持字段级切入点
它是基于模式和注解配置的
74、AOP术语有哪些?切面
通知
切点
连接点
引入
目标对象
AOP代理
织入
75、切面AOP的核心结构是切面,它将影响多个类的行为封装到可重用的模块中。提供了一组跨领域需求的ia模块。例如,一个日志模块将被称为AOP切面进行日志记录。根据需求,应用程序可以有任意数量的切面。在spring aop中,切面是使用带有@Aspect注释(@AspectJ样式)注解的常规类来实现的。
76、连接点连接点代表一个应用程序的某个位置,在这个位置我们可以插入一个AOP切面,它实际上是个应用程序执行Spring AOP的位置。
77、通知通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过SpringAOP框架触发的代码段。
Spring切面可以应用五种类型的通知:
before: 前置通知,在一个方法执行前被调用
after: 在方法执行之后调用的通知,无论方法执行是否成功
after-returning: 仅当方法成功完成后执行的通知
after-throwing: 在方法抛出异常退出时执行的通知
around: 在方法执行之前和之后调用的通知
78、切点切入点是一个或一组连接点,通知将在这些位置执行。可以通过表达式或匹配的方式指明切入点。
79、什么是引入?引入允许我们在已存在的类中增加新的方法和属性。
80、什么是目标对象?目标对象是由一个或多个切面通知的对象。它将始终是一个代理对象。它也被称为通知(advised)对象。
81、什么是代理?代理是通知目标对象后创建的对象。从客户端的角度看,代理对象和目标对象是一样的。
82、有哪些不同类型的代理?BeanNameAutoProxyCreator
DefaultAdvisorAutoProxyCreator
Metadata autoproxying
83、什么是织入。什么是织入应用的不同点?<typo id="typo-15984" data-origin="织入" ignoretag="true">织入</typo>是将切面和到其他应用类型或对象连接或创建一个被通知对象的过程。
织入可以在编译时,加载时,或运行时完成。
84、Spring AOP中关注点和横切关注点有什么区别?关注点是我们希望在应用程序的模块中拥有的行为。关注点可以定义为我们想要实现的功能。
横切关注点是一个在整个应用程序中都适用的关注点,它会影响整个应用程序。例如,日志记录、安全性和数据传输是应用程序中几乎每个模块都需要的关注点,因此它们是横切关注点。
85、解释基于XML Schema方式的切面实现在这种情况下,切面由常规类以及基于XML的配置实现。
86、解释基于注解的切面实现在这种情况下(基于@AspectJ的实现),涉及到的切面声明的风格与带有java5标注的普通java类一致。
G.Spring Model View Controller (MVC)
87、什么是Spring MVC框架?Spring 配备构建Web 应用的全功能MVC框架。Spring可以很便捷地和其他MVC框架集成,如Struts,Spring 的MVC框架用控制反转把业务对象和控制逻辑清晰地隔离。它也允许以声明的方式把请求参数和业务对象绑定。
88、创建spring mvc应用程序所需的最少配置是什么?为了创建一个简单的Spring MVC应用程序,我们需要做以下工作:
在项目中添加spring上下文和spring-webmvc依赖。在web.xml中配置DispatcherServlet来通过spring容器处理请求。
定义bean的spring bean配置文件,如果使用注解,那么必须在这里配置它。我们还需要为视图页面配置视图解析器。
定义用于处理客户端请求的请求映射的控制器类。
89、说出Spring MVC请求处理的主要流程?浏览器向DispatcherServlet发送请求
DispatcherServlet获取HanderMapping并找到适当的控制器
控制器执行请求并将数据放入模型中,并将视图名称返回给DispatcherServlet。
DispatcherServlet通过视图名称和ViewResolver映射到对应的视图。
90、DispatcherServletSpring的MVC框架是围绕DispatcherServlet来设计的,它用来处理所有的HTTP请求和响应。
91、WebApplicationContextWebApplicationContext 继承了ApplicationContext 并增加了一些WEB应用必备的特有功能,它不同于一般的ApplicationContext ,因为它能处理主题,并找到被关联的servlet。
92、 Spring MVC中的控制器是什么?控制器提供一个访问应用程序的行为,此行为通常通过服务接口实现。控制器解析用户输入并将其转换为一个由视图呈现给用户的模型。Spring用一个非常抽象的方式实现了一个控制层,允许用户创建多种用途的控制器。
93、你如何将spring mvc框架与MVC架构联系起来?SpringMVC框架:
Spring框架是一个开源的web应用程序框架和Java平台的控制反转容器。
MVC架构:
MVC(Model-View-Controller,简称MVC)是一种用于开发web应用程序的软件设计模式.
94、Spring MVC中的ViewResolver是什么?Spring提供了ViewResolver,它使你能够在浏览器中渲染模型,而无需将绑定到特定的视图技术。例如,Spring允许您使用jsp、Velocity模板和XSLT视图。对Spring处理视图的方式很重要的两个接口是ViewResolver和View。ViewResolver提供视图名称和实际视图之间的映射。View接口处理请求的准备工作,并将请求移交给某一个视图技术。
95、MultipartResolver是什么?怎么使用?spring mvc通过MultipartResolver提供多请求支持。MultipartResolver解析入站多请求。你可以通过在DispatcherServlet应用程序上下文中注册MultipartResolver bean来启用多请求支持。
96、如何在spring mvc应用程序中上传文件?Spring为通过MultipartResolver接口为上传文件提供了内置支持。该字段还有一个验证器,用于检查上载的文件的大小是否大于零。最后只需要一个简单的视图,其中包含一个带有上载文件选项的表单。
97、Spring Web MVC怎么校验数据?这里有三种方式去 提供校验 :使用注解、手动校验、或者两者混合。
98、什么是springmvc拦截器以及如何使用它?Spring的处理程序映射机制包括处理程序拦截器,当你希望将特定功能应用于某些请求时,例如,检查用户主题时,这些拦截器非常有用。拦截器必须实现org.springframework.web.servlet包的HandlerInterceptor。此接口定义了三种方法:
preHandle:在执行实际处理程序之前调用。
postHandle:在执行完实际程序之后调用。
afterCompletion:在完成请求后调用。
扩展99、Spring Security是什么?Spring security 是Spring框架中最重要的模块之一。它使开发人员能够以一种可管理的方式轻松地集成安全特性。在下面的示例中,我们将展示如何在springmvc应用程序中实现Spring安全性。
100、为什么要用SpringBoot?以下是使用SpringBoot的一些好处:
自动配置,使用基于类路径和应用程序上下文的智能默认值,当然也可以根据需要重写它们以满足开发人员的需求。
创建Spring Boot Starter 项目时,可以选择选择需要的功能,Spring Boot将为你管理依赖关系。
SpringBoot项目可以打包成jar文件。可以使用Java-jar命令从命令行将应用程序作为独立的Java应用程序运行。
在开发web应用程序时,springboot会配置一个嵌入式Tomcat服务器,以便它可以作为独立的应用程序运行。(Tomcat是默认的,当然你也可以配置Jetty或Undertow)
SpringBoot包括许多有用的非功能特性(例如安全和健康检查)。
image
结尾还有一半在上一篇哦,以上就是从各个大厂整理的最新Spring面试题了,如果对您有帮助记得点赞 收藏哦,感谢您的支持!
,