儿童节问女朋友要礼物-她反手给我一套Spring框架面试真题!

简介: 儿童节问女朋友要礼物-她反手给我一套Spring框架面试真题!

image.png

第6天,打卡《Sping框架面试真题篇》

秋招将至,坚持每日学习、打卡、秋招Offer满满哦!

题目会持续更新,且保证有质量,期待你的参与,一起打卡,一起进步!

image.png

一: 你可以简单描述下SpringMvc的执行流程吗

image.png

1、前端控制器(DispatchServlet)接收到客户端发送的请求


 2、收到请求后它会转发给处理器映射器(HandlerMapping),请求获取Handler。


 3、处理器映射器根据请求url找到具体的处理器,生成处理器对象和处理器拦截器(如果有),然后一并返回给DispatcherServlet。


 4、前端控制器请求返回的处理器对象转发给处理器适配器(HandlerAdapter)


 5、处理器适配器通过适配处理调用具体的处理器(Handler)既执行实际的后端逻辑处理代码,生成结果。


 6、处理器适配器将Handler执行的结果ModelAndView返回给前端控制器


 7、前端控制器将返回的ModelAndView转发给ViewResolver解析成View,并将View对象返回给前端控制器。


 8、前端控制器接收到View对象然后转发给视图(一个接口,用于渲染视图)进行数据渲染。


 9、前端控制器将处理结果响应给客户端



二: 说说你使用SpringMVC时常用到的注解以及作用

1、Controller/Service/Repository/Component: 用于标识当前类属于控制层/业务层/数据层/泛指组件(通用),被标记的类会被Spring容器进行管理。


 2、RequestMapping: 请求地址映射,客户端请求映射路径可以到控制层,可以作用在或者方法中,当在类范围使用时,表示类中所有请求的父路径,当使用在某个方法时,表示当前方法的请求路径


 3、RequestBody: 用于标记请求参数,被标记的参数会自动将请求的参数映射到符合条件的接受参数实体中


 4、ResponseBody: 将反馈结果使用框架中对应的JSON框架转换成json字符串,可以使用在类或者方法中,当使用在类时,表示将类中所有的方法的反馈结果都转换成对应的JSON字符串,使用在方法时,表示将该方法的反馈结果转换成JSON字符串


 5、RequestParam: 获取URL中携带的请求参数既URL中“?”后携带的参数,c传递参数的格式是:key=value


 6、PathVariable: 用于获取URL中路径的参数值,参数名由RequestMapping注解请求路径时指定,常用语restful风格的api中,传递参数格式:直接在url后添加需要传递的值即可 如:/api/demo/1


 7、Autowired: 自动装配,Spring发现@Autowired注解时,将自动在代码上下文中找到和其匹配(默认是类型匹配)的Bean,并自动注入到相应的地方去。当Spring找不到bean时会抛出异常,将@Autowired注解的required属性设置为false 不会抛出异常,会显示null


 8、Resource: 类型填充,默认通过name属性去匹配bean,当找不到时再按type去匹配,当指定了name或者type则根据指定的类型去匹配bean,任何一个不匹配都报错


 9、RestController: 实际上就是等于 Controller + ResponseBody的作用



三: Spring Framework、Springboot和Springmvc有什么区别

一 详细:


 1、Spring就是一个框架家族,它是为了解决企业应用开发的复杂性而创建的,由它衍生出了spring security、spring jpa、spring Cloud等产品,但是,这些产品的基础还是基于Spring框架中的IOC和AOP,IOC提高了依赖注入的容器,降低了对象间的耦合性,AOP提供了面向切面的编程,提高了代码的复用性,然后在两者的基础上实现了其他延伸产品的高级功能。


 2、SpringMVC: 它提供了一种轻度耦合的方式来开发web应用。属于Sping家族中的一个模块,是一个web框架,通过前端控制器、处理器映射器、处理器适配器、视图解析器等使得开发web应用变得更容易。


 3、SpringBoot: 它属于Spring家族中的一个子项目,是为了解决使用Spring项目开发时需要进行大量配置的问题,它并不是用于替换Spring框架的解决方案,而是依赖于Spring框架,集成了许多常用的第三方框架,遵循了"约定大于配置"的原则,让开发者则能够对主流的技术开箱即用,提升开发效率。



二: 总结


 1、Spring实际上是一个框架家族,Spring Framework属于其中的一个子模块,基于IOC和AOP实现组件解耦


 2、SpringBoot可以看做是一个整合工具,可以方便快速使用


 3、SpringMVC是以Spring为基础,拓展出来的一个MVC包,提供了一种轻度耦合的方式来开发web应用。



四: 说说Spring Framework的一个体系结构和对应jar包的作用

image.png

一: Data Access模块相关jar包


 1、Spring-JDBC: jdbc支持包

 2、Spring-tx: 支持事务控制

 3、Spring-orm: 对象映射关系,继承orm框架

 4、Spring-oxm: 支持对象xml映射

 5、Spring-jms: 支持对象消息服务



二: Web模块相关jar包


 1、Spring-web: 基础的web功能

 2、Spring-webmvc: 支持webmvc实现

 3、Spring-webmvc-porlet: 基于porlet的mvc实现

 4、Spring-structs: 集成structs,但spring4不再推荐

 5、Spring-websocket: websocker支持(spring4),为web应用程序提高高效的通信工具。

 6、Spring-mssaging: 支持构建消息的应用程序(Spring4支持)



三: AOP模块相关的jar包


 1、Spring-AOP: 支持面向切面编程

 2、Spring-Aspect: 集成Aspect,支持使用Aspect实现面向切面编程

 3、Spring-instrument: 提供一些类级的工具支持以及classloader的实现



四: Core Container模块相关的jar包


 1、Spring-core: 提供依赖注入DI和控制反转IOC的支持

 2、Spring-beans: Bean工厂和bean的装配支持

 3、Spring-context: Spring的上下文支持

 4、Spring-Expression: 支持Spring表达式语言



五: Test模块相关的jar包


 1、Spring-test: 提供junit和Mock测试功能

 2、Spring-context-support: Spring的额外包支持如邮件服务



五: @Autowire和@Resource注解有什么区别

1、@Autowired默认按类型装配,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false。


 2、@Resource默认按名称装配,当找不到与名称匹配的bean时才按照类型进行装配。名称可以通过name属性指定,如果没有指定name属性,当注解写在字段上时,默认取字段名,当注解写在setter方法上时,默认取属性名进行装配。


 3、@Autowire和@Qualifier配合使用效果和@Resource一样


 4、@Autowired是Spring的注解,@Resource是J2EE的注解,Spring属于第三方的,J2EE是Java自己的东西,因此,建议使用@Resource注解,以减少代码和Spring之间的耦合。



六: @Resource装配顺序


1、如果同时指定name和type,则从容器中查找唯一匹配的bean装配,找不到则抛出异常


 2、如果指定name属性,则从容器中查找名称匹配的bean装配,找不到则抛出异常


 3、如果指定type属性,则从容器中查找类型唯一匹配的bean装配,找不到或者找到多个抛出 异常。


 4、如果都不指定,则自动按照byName方式装配,如果没有匹配,则回退一个原始类型进行匹配,如果匹配则自动装配。



七: PathVariable、RequestParam、Param注解的区别


1、@RequestParam注解作用: 获取URL中携带的请求参数既URL中“?”后携带的参数,c传递参数的格式是:key=value


 2、@PathVariable注解作用: 用于获取URL中路径的参数值,参数名由RequestMapping注解请求路径时指定,常用语restful风格的api中,传递参数格式:直接在url后添加需要传递的值即可


 3、Param注解作用: 属于Mybatis框架中的注解,主要是用于绑定参数,可以指定对应的参数名称,然后可以在mapper.xml文件中使用绑定的名称来调用参数的属性。



八: Spring中事务的传播属性有哪些

一:定义


 用于描述系统中存在多个事务,且事务之间存在嵌套调用(如A、B方法都开启了事务,但是在A方法中调用了B方法)时事务如何传播,它的传播行为是作用嵌套的方法中,如方法B嵌套中A中,传播行为则是作用在B方法中表示B事务的一些特性是有A决定的


 事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。


二: 种类


 PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。


 PROPAGATION_REQUIRES_NEW:总是主动开启事务;如果存在外层事务,就将外层事务挂起


 PROPAGATION_SUPPORTS:如果不存在外层事务,就不开启事务;否则使用外层事务


 PROPAGATION_NOT_SUPPORTED:总是不开启事务;如果存在外层事务,就将外层事务挂起


 PROPAGATION_MANDATORY:如果不存在外层事务,就抛出异常;否则使用外层事务


 PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。


 PROPAGATION_NEVER:总是不开启事务;如果存在外层事务,则抛出异常



九: 注入容器的注解有哪些

1、Controller :用于标注表现层的组件


 2、Service: 用于标注业务逻辑层的组件


 3、Repository: 用于标注持久层的组件


 4、Component: 可以使用在任意层级,表示通用的组件


 5、Configuration: 表示是配置信息组件


 6、Bean: 表示实体对象组件



十: 使用Springboot的优缺点


一: 优点


(1)能够快速创建基于 Spring 的应用程序、提高开发和部署效率。


(2)内置了tomcat、jetty等HTTP服务器,项目可以独立运行。


(3)提供了许多starter包,让 Maven 的配置变得简单。


(4)对主流框架无配置集成。


(5)提供了程序的运行时健康检查、监控等功能。


(6)可以完全不使用 XML 配置文件,采用注解配置。


(7)与云计算天然集成



二: 缺点


 1、它只是Spring框架家族中的一个子项目,主要是用来提高开发和部署效率,提高生产力的,并没有如服务发现和服务注册功能,也没有配套的安全管控方案。


 2、将传统的或者现有Spring Framework项目转为SpringBoot应用是比较困难和麻烦的,它更适用于全新的Spring项目。



九: 总结和下篇预告


  六一儿童节、先祝大家儿童节快乐、希望大家能够早日遇到和你一起度过儿童节的人,如果看完文章能够给你带来一些欢乐、一些收获、那就是我送给你儿童节最好的礼物。


  下篇的面试题目主要是关于数据库Explain关键字解析,带你解读执行计划的真正含义。


  欢迎大家关注,如果觉得文章对你有帮助,不要忘记一键三连哦,你的支持是我创作更加优质文章的动力,希望大家都能够早日拿到心仪的Offer,有任何面试问题可以私信我,欢迎大家投稿面试题目哦!


相关文章
|
5月前
|
安全 Java Ruby
我尝试了所有后端框架 — — 这就是为什么只有 Spring Boot 幸存下来
作者回顾后端开发历程,指出多数框架在生产环境中难堪重负。相比之下,Spring Boot凭借内置安全、稳定扩展、完善生态和企业级支持,成为构建高可用系统的首选,真正经受住了时间与规模的考验。
400 2
|
4月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
6月前
|
XML JSON Java
Spring框架中常见注解的使用规则与最佳实践
本文介绍了Spring框架中常见注解的使用规则与最佳实践,重点对比了URL参数与表单参数的区别,并详细说明了@RequestParam、@PathVariable、@RequestBody等注解的应用场景。同时通过表格和案例分析,帮助开发者正确选择参数绑定方式,避免常见误区,提升代码的可读性与安全性。
|
7月前
|
Java Spring
聊聊你对SpringBoot框架的理解 ?
SpringBoot是Spring家族中流行的子项目,旨在简化Spring框架开发的繁琐配置。它主要提供三大功能:starter起步依赖简化依赖管理,自动配置根据条件创建Bean,以及内嵌Web服务器支持Jar包运行,极大提升了开发效率。
223 0
|
4月前
|
消息中间件 缓存 Java
Spring框架优化:提高Java应用的性能与适应性
以上方法均旨在综合考虑Java Spring 应该程序设计原则, 数据库交互, 编码实践和系统架构布局等多角度因素, 旨在达到高效稳定运转目标同时也易于未来扩展.
231 8
|
5月前
|
监控 Kubernetes Cloud Native
Spring Batch 批处理框架技术详解与实践指南
本文档全面介绍 Spring Batch 批处理框架的核心架构、关键组件和实际应用场景。作为 Spring 生态系统中专门处理大规模数据批处理的框架,Spring Batch 为企业级批处理作业提供了可靠的解决方案。本文将深入探讨其作业流程、组件模型、错误处理机制、性能优化策略以及与现代云原生环境的集成方式,帮助开发者构建高效、稳定的批处理系统。
596 1
|
7月前
|
安全 Java 微服务
Java 最新技术和框架实操:涵盖 JDK 21 新特性与 Spring Security 6.x 安全框架搭建
本文系统整理了Java最新技术与主流框架实操内容,涵盖Java 17+新特性(如模式匹配、文本块、记录类)、Spring Boot 3微服务开发、响应式编程(WebFlux)、容器化部署(Docker+K8s)、测试与CI/CD实践,附完整代码示例和学习资源推荐,助你构建现代Java全栈开发能力。
790 1
|
8月前
|
设计模式 算法 架构师
京东二面:说下spring中常用的设计模式? (一个 深入骨髓的答案, 面试官跪下了)
京东二面:说下spring中常用的设计模式? (一个 深入骨髓的答案, 面试官跪下了)
京东二面:说下spring中常用的设计模式? (一个 深入骨髓的答案, 面试官跪下了)
|
7月前
|
NoSQL Java 数据库连接
SpringBoot框架
Spring Boot 是 Spring 家族中最流行的框架,旨在简化 Spring 应用的初始搭建与开发。它通过自动配置、起步依赖和内嵌服务器三大核心功能,大幅减少配置复杂度,提升开发效率。开发者可快速构建独立运行的 Web 应用,并支持多种数据访问技术和第三方集成。
|
6月前
|
Cloud Native Java API
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
Java Spring框架技术栈选和最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡
1215 0

热门文章

最新文章