Spring框架常见面试题

article/2025/9/25 9:24:01

1. 你对Spring框架的理解(特点)? Spring框架有哪些模块 ?

  • Spring,一种用来简化企业应用级开发的一种开源框架。
  • 简化开发:它对常用的API做了封装,比如对JDBC的封装,使用Spring JDBC访问数据库,就不需要考虑如何获取连接和关闭的问题。
  • 解耦:Spring帮我们管理软件之间的依赖关系,这样对象之间的耦合性就降低了,这样的维护性就得到了提高。
  • 集成其它框架:方便扩展和优化其功能,例如和Mybatis的集成等。
  • Spring框架是按照设计模式精心打造的,这使得我们在开发环境中,能方便的使用框架,不用考虑后台是怎么进行的。
  • Spring容器是Spring框架中一个核心的模块,用来管理对象的创建,销毁和初始化扥操作,以及对象之间的依赖关系等。
  • 目前Spring框架已经集合成20多个模块:                            

2. Spring的优点 ?

  • 简化开发,解耦,集成其它框架。
  • 低侵入式设计,代码污染级别级别。
  • Spring的DI机制降低了业务对象替换的复杂性,提高了软件之间的解耦。
  • Spring AOP支持将一些通用的任务进行集中式的管理,例如:安全,事务,日志等,从而使代码能更好的复用。

 

3. 什么是控制反转(IOC),什么是依赖注入(DI)?

  • IOC:就是对象之间的依赖关系由容器来创建,对象之间的关系本来是由我们开发者自己创建和维护的,在我们使用Spring框架后,对象之间的关系由容器来创建和维护,将开发者做的事让容器做,这就是控制反转。BeanFactory接口是Spring Ioc容器的核心接口。
  • DI:我们在使用Spring容器的时候,容器通过调用set方法或者是构造器来建立对象之间的依赖关系。
  • 控制反转是目标,依赖注入是我们实现控制反转的一种手段。

 

4. Java中实现依赖注入的三种方式?

  • 构造器注入
  • set方法注入
  • 接口注入

 

5.Spring容器中如何创建对象?

无参构造创建 静态工厂创建 实例工厂创建

 

6. Spring有几种配置方式 ?

  • 基于XML文件的配置 这种配置文件的格式常用<beans>开头,然后运用一系列的bean定义和专门的应用配置选项组成。 Spring XML配置方式是使用被Spring命名空间所支持的一些列XML的标签来实现的。
  • 基于注解的配置 可以使用注解的方式来代替XML方式的bean元素的配置。这就是组件扫描,常用依赖注入的一些注解有: @Controller @Service @Autowired @RequestMapping @RequestParam @ModelAttribute @Cacheable @CacheFlush @Resource @PostConstruct @PreDestroy @Repository @Scope @SessionAttributes @InitBinder @Required @Qualifier
  • 组件扫描: 容器会扫描base-package指定的包及其子包下面的所有类,如果该类有一些特定的注解,则纳入容器进行管理。
  • 在类前面添加的一些特定的注解: @Component 通用注解 @Repository 持久层注解 @Service 业务层注解、 @Controller 控制层注解
  • 基于Java的配置

 

7. Spring Bean的生命周期 ?

  • 指Spring中bean元素被实例化,和被销毁的过程。我们通过init-method属性指定初始化方法; 通过destroy-method方法指定销毁方法。
  • 注意:只有作用域为Singleton的时候才会有效。

 

8. 解释什么叫延迟加载 ?

  • 默认情况下,容器启动之后会将所有作用域为单例的bean创建好;但是有的业务场景我们并不需要它提前都创建好;
  • 此时,我们可以在bean中设置lzay-init=“true”,这样,当容器启动之后,作用域为单例的bean,就不在创建。

 

9. 解释什么是自动装配 ?

  • 就是将一个Bean注入到其它的Bean的Property中,默认情况下,容器不会自动装配,需要我们手动设定。Spring 可以通过向Bean Factory中注入的方式来搞定bean之间的依赖关系,达到自动装配的目的。
  • 自动装配建议少用,如果要使用,建议使用ByName

10. Spring bean元素的作用域?

  • 当通过Spring容器创建一个Bean实例的时候,不仅可以完成bean实例的实力化,还可以为bean指定作用域。Spring bean元素的支持以下5种作用域:
  • Singleton:单例模式,在整个spring IOC容器中,使用singleton定义的bean将只有一个实例。
  • Prototype:多例模式,每次通过容器中的getBean方法获取prototype定义的beans时,都会产生一个新的bean的实例。
  • Request:对于每次Http请求,使用request定义的bean都会产生一个新的实例,只有在web应用时候,该作用域才会有效。
  • Session:对于每次Http Session,使用session定义的Bean都将产生一个新的实例。
  • Globalsession:每个全局的Http Sesisonn,使用session定义的本都将产生一个新的实例。

11. Spring中的bean是线程安全的么?

  • Spring框架并没有对单例的bean进行多线程的封装处理,线程安全问题和并发问题,需要我们开发者自己考虑。
  • 但实际上,大部分的Spring bean并没有可变的状态(比如:service类和dao类),所有在某种程度上来说Spring单例bean是线程安全的。如果bean有多种状态的话(比如:View Model对象),就需要自行考虑线程安全问题。

12. 如何在Spring中注入一个Java Collection ?

  • Spring提供理论四种集合类的配置元素:
  • lt;List&: 该标签用来装配 有重复值的list值
  • lt;set&: 该标签用来装配没有重复值的 set值
  • lt;map&:该标签科以用来注入键值对
  • lt;props&: 该标签用来支持注入键值对和字符串类型键值对。

13. Spring框架中都用到了哪些设计模式 ?

  • 代理模式,在AOP中被使用最多。
  • 单例模式,在Spring配置文件中定义bean的时候默认的是单例模式。
  • 工厂模式, BeanFactory用来创建对象的实例。
  • 模板方法, 用来解决重复性代码。
  • 前端控制器,Spring提供了DispatcherSerclet来对请求进行分发。
  • 视图帮助,Spring提供了一系列的JSP标签。
  • 依赖注入,它是惯穿于BeanFactory/ApplicationContext接口的核心理念。

14. Spring中的事件处理 ?

  • Spring 的核心是ApplicatonContext,它负责管理bean的完整的生命周期。Spring提供了以下内置事件: ContextRefreshedEvent ContextStartedEvent ContextStoppedEvent ContextClosedEvent RequestHandleEvent
  • 由于 Spring 的事件处理是单线程的,所以如果一个事件被发布,直至并且除非所有的接收者得到的该消息,该进程被阻塞并且流程将不会继续。因此,如果事件处理被使用,在设计应用程序时应注意。
  • 监听上下文事件
  • 自定义事件

15. Spring AOP(面向切面)编程的原理 ?

  • AOP面向切面编程,它是一种思想。它就是针对业务处理过程中的切面进行提取,以达到优化代码的目的,减少重复代码的目的。 就比如,在编写业务逻辑代码的时候,我们习惯性的都要写:日志记录,事物控制,以及权限控制等,每一个子模块都要写这些代码,代码明显存在重复。这时候,我们运用面向切面的编程思想,采用横切技术,将代码中重复的部分,不影响主业务逻辑的部分抽取出来,放在某个地方进行集中式的管理,调用。 形成日志切面,事物控制切面,权限控制切面。 这样,我们就只需要关系业务的逻辑处理,即提高了工作的效率,又使得代码变的简洁优雅。这就是面向切面的编程思想,它是面向对象编程思想的一种扩展。
  • AOP的使用场景: 缓存、权限管理、内容传递、错误处理、懒加载、记录跟踪、优化、校准、调试、持久化、资源池、同步管理、事物控制等。 AOP的相关概念: 切面(Aspect) 连接点(JoinPoint) 通知(Advice) 切入点(Pointcut) 代理(Proxy): 织入(WeaVing)
  • Spring AOP的编程原理? 代理机制 JDK的动态代理:只能用于实现了接口的类产生代理。 Cglib代理:针对没有实现接口的类产生代理,应用的是底层的字节码增强技术,生成当前类的子类对象。

16. 解释一下代理模式(Proxy)

  • 代理模式: 代理模式就是本该我做的事,我不做,我交给代理人去完成。就比如,我生产了一些产品,我自己不卖,我委托代理商帮我卖,让代理商和顾客打交道,我自己负责主要产品的生产就可以了。 代理模式的使用,需要有本类,和代理类,本类和代理类共同实现统一的接口。然后在main中调用就可以了。本类中的业务逻辑一般是不会变动的,在我们需要的时候可以不断的添加代理对象,或者修改代理类来实现业务的变更。
  • 代理模式可以分为: 静态代理 优点:可以做到在不修改目标对象功能的前提下,对目标功能扩展 缺点:因为本来和代理类要实现统一的接口,所以会产生很多的代理类,类太多,一旦接口增加方法,目标对象和代理对象都要维护。 动态代理(JDK代理/接口代理) 代理对象,不需要实现接口,代理对象的生成,是利用JDK的API,动态的在内存中构建代理对象,需要我们指定代理对象/目标对象实现的接口的类型。 Cglib代理 特点: 在内存中构建一个子类对象,从而实现对目标对象功能的扩展。
  • 使用场景: 修改代码的时候。不用随便去修改别人已经写好的代码,如果需要修改的话,可以通过代理的方式来扩展该方法。 隐藏某个类的时候,可以为其提供代理类 当我们要扩展某个类功能的时候,可以使用代理类 当一个类需要对不同的调用者提供不同的调用权限的时候,可以使用代理类来实现。 减少本类代码量的时候。 需要提升处理速度的时候。就比如我们在访问某个大型系统的时候,一次生成实例会耗费大量的时间,我们可以采用代理模式,当用来需要的时候才生成实例,这样就能提高访问的速度。

 


http://chatgpt.dhexx.cn/article/6WXwjuvU.shtml

相关文章

【面试】Spring面试题

文章目录 Spring概述什么是spring?Spring的俩大核心概念Spring框架的设计目标&#xff0c;设计理念&#xff0c;和核心是什么Spring的优缺点是什么&#xff1f;Spring有哪些应用场景Spring由哪些模块组成&#xff1f;Spring 框架中都用到了哪些设计模式&#xff1f;详细讲解一…

Spring框架面试精华知识

咳咳&#xff0c;这里整理一些关于WEB框架的一些知识点&#xff0c;来帮助更多的人进行面试&#xff0c;主要的还是讲解一些关于目前企业用得比较流行的框架&#xff0c;还有就是一些比较前沿的框架&#xff0c;比如阿里开源的Dubbo框架及其开源框架Zookeeper等等&#xff0c;都…

Spring框架-面试题核心概念

目录 1.Spring框架的作用是什么&#xff1f; 2. 什么是DI&#xff1f; 3.什么是AOP&#xff1f; 4.Spring常用注解 5.Spring中的设计模式 6.Spring支持的几种bean的作用域 7.Spring中Bean的生命周期&#xff1f; 8.Spring中的事务管理 9.Spring中的依赖注入方式有几种 10.Sprin…

MyBatis+Spring+SpringMVC框架面试题整理(一)

目录 SpringMVC 的工作原理 谈谈你对SpringMVC的理解 SpringMVC 常用注解都有哪些? Spring 的常用注解 如何开启注解处理器和适配器? 如何解决 get 和 post 乱码问题? 谈谈你对 Spring 的理解 Spring 中的设计模式(解释) 简单介绍一下 Spring bean 的生命周期&…

面试官:看你简历上写熟悉Spring框架,谈谈对Spring的理解

今天只谈一下我们在面试中的如果面试官问到Spring&#xff0c;你应该怎么去回答&#xff0c;来获取面试官的青睐。在我的印象中&#xff0c;Spring框架可以说是Java世界里面最为成功的框架了&#xff0c;在企业的实际的应用里面&#xff0c;大部分的企业架构都是基于Spring框架…

说实话,面试这么问Spring框架的问题,我快扛不住了

面试官&#xff1a;Spring Framework有用过吧? 小小白&#xff1a;用过(有些心虚&#xff0c;因为Spring框架中内容太多了)。 面试官&#xff1a;在applicationgContext.xml文件中定义了一个bean&#xff0c;id为authService&#xff0c;通过ApplicationContext实例对象的getB…

【java面试】框架篇之Spring

1.你如何理解Spring? 具体来说Spring是一个轻量级的容器&#xff0c;用于管理业务相关对象的。核心功能主要为&#xff1a;IOC,AOP,MVC。 IOD&#xff1a;控制反转&#xff0c;将对象的创建过程交给容器&#xff0c;让容器管理对象的生命周期如创建&#xff0c;初始化&#…

spring框架-如何面试(四)

回顾&#xff1a; spring框架-认识spring框架&#xff08;一&#xff09; spring框架-认识IOC&#xff08;二&#xff09; spring框架-认识AOP&#xff08;三&#xff09; 面试官关于spring最喜欢、也是概率最大的提问 谈谈你对spring的理解 spring的官方定义&#xff1a;…

Spring框架面试题总结(面试必备)

1. spring 概述部分 1.1 什么是spring? 1.2 spring框架的核心? 1.3 spring框架的优缺点 1.4 spring5 的主要模块构成 1.5 Spring 框架中都用到了哪些设计模式&#xff1f; 1.6 讲解一下核心容器&#xff08;spring context应用上下文) 模块 2. spring的控制反转&#xff08…

cmos管宽长比,OC, OD门和线与逻辑,传输门,竞争冒险,三态门

https://blog.csdn.net/vivid117/article/details/100187137 pmos,nmos宽长比https://blog.csdn.net/qq_34070723/article/details/89291200 cmos宽长比&#xff1a; 1.CMOS的宽长比 关于COMS原理及结构图可以参考[1]COMS原理及门电路设计. 栅在源漏方向的长度称作栅的长L&…

OD门OC门

什么是集电极开路&#xff08;OC&#xff09;&#xff1f; % {0 V: X2 {1 I2 s E( y; n! S 我们先来说说集电极开路输出的结构。集电极开路输出的结构如图1所示&#xff0c;右边的那个三极管集电极什么都不接&#xff0c;所以叫做集电极开路&#xff08;左边的三极管为反相之用…

最强深入浅出上拉、OC门、OD门 —— 电子电路基础2

写在前面&#xff1a;对于本科阶段数电课程课时比较少的学校&#xff0c;这一块老师很可能就跳过了&#xff0c;对于这一块的知识来源&#xff0c;清华大学阎石的数电课本在第三章CMOS门电路和TTL门电路。 先看一些电路&#xff1b; &#xff08;1&#xff09;为什么有些时候单…

女朋友去应聘硬件工程师,面试官考她OC门、OD门和推挽输出!

硬件工程师的笔试题中经常会考OC门和OD门&#xff0c;有的放在面试中问&#xff0c;多个OC或者多个OD门能组成线与结构&#xff0c;线与结构考的更频繁&#xff0c;还有一个推挽输出&#xff0c;有一些单片机的GPIO用的就是这种结构&#xff0c;如最常见的STM32。 原创博主AirC…

OC门、OD门和推挽输出

1. OC门 OC意为集电极开路&#xff0c;结构如下&#xff1a; OC门电路 A0&#xff0c;①截止&#xff0c;②导通&#xff0c;相当于开关闭合&#xff0c;输出0V&#xff08;实际输出不是0V&#xff0c;因为三极管存在饱和压降&#xff09;。 A1&#xff0c;①导通&#xff0…

线与逻辑与OC门、OD门关系

线与逻辑:两个或多个输出信号连接在一起可以实现逻辑“与”的功能。 以下图为例: 当与非门G1和G2输出都为1时,输出L才为1;只要有一个输出为0,则输出L为0。 在硬件上,要用OC门(三极管,集电极开路)或OD门(NMOS,漏极开路)来实现。另外,为了防止灌电流过大,在输出端…

数字电路基础知识——CMOS门电路 (与非门、或非、非门、OD门、传输门、三态门)

数字电路基础知识——CMOS门电路 (非门、或非门、与非门、或门、与门、与或非门、异或门、OD门、传输门、三态门) 先了解二极管门电路逻辑&#xff0c;再次介绍CMOS门电路&#xff0c;也是IC中用的最广泛的门电路。 主要了解与非门、或非门以及相同面积的cmos与非门和或非门哪个…

CMOS门电路(OD门、传输门、双向模拟开关、三态门)

文章目录 【 1. MOS管】【 2. CMOS电路】电路结构拉电流灌电流 【 3. 多余输入端的处理】【 4. 扇出系数】【 5. 输入噪声容限】提高噪声容限的方法 【 6. 电压、电流的传输特性】【 7. 静态输入、输出特性】静态输入特性静态输出特性 【 8. 动态特性】①传输延迟时间②交流噪声…

OC门与OD门以及线与逻辑

OC&#xff08;Open Collector&#xff09;门又叫集电极开路门&#xff0c;主要针对的是BJT电路&#xff08;从上往下依次是基极&#xff0c;集电极&#xff0c;发射极&#xff09;OD&#xff08;Open Drain&#xff09;门又叫漏极开路门&#xff0c;主要针对的是MOS管&#xf…

OC门电路和OD门电路的区别

OC门电路和OD门电路的区别 一、OC门电路是什么&#xff1f;二、OD门电路是什么&#xff1f;三、总结 一、OC门电路是什么&#xff1f; OC门电路&#xff1a;集电极开路&#xff08;open collector&#xff09; OC门电路的工作原理&#xff1a; 1&#xff09;当INPUT输入高电平…

CMOS搭建反相器、与非门和或非门以及OD和三态门

文章目录 基本概念1. N沟道增强型MOS管2. P沟道增强新MOS管 反相器与非门或非门OD门和三态门1.OD门2.三态门 基本概念 CMOS&#xff08;互补对称式金属-氧化物-半导体电路&#xff09;&#xff0c;具有源极&#xff08;S&#xff09;、栅极&#xff08;G&#xff09;和漏极&am…