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

article/2025/9/25 10:19:44

1. spring 概述部分

1.1 什么是spring?
1.2 spring框架的核心?
1.3 spring框架的优缺点
1.4 spring5 的主要模块构成
1.5 Spring 框架中都用到了哪些设计模式?
1.6 讲解一下核心容器(spring context应用上下文) 模块

2. spring的控制反转(IOC)

2.1 什么是Spring IOC 容器?
2.2 IOC 有什么作用?
2.3 使用IOC容器的优点?
2.4 spring IOC支持哪些功能
2.5 BeanFactory 和 ApplicationContext有什么区别?
2.6 ApplicationContext通常的实现是什么?
2.8 什么是Spring的依赖注入?
2.9 依赖注入有什么优势?
2.10 有哪些不同类型的依赖注入实现方式?
2.11 构造器依赖注入和Setter方法注入的区别

3. spring 的 Bean

3.1 什么是Spring bean?
3.2 一个 Spring Bean 定义 包含什么?
3.3 如何给Spring 容器提供配置元数据?Spring有几种配置方式
3.4 Spring基于xml注入bean的几种方式
3.5 你怎样定义类的作用域?
3.6 解释Spring支持的几种bean的作用域?
3.7 Spring框架中的单例bean是线程安全的吗?
3.8 Spring如何处理多线程并发问题?
3.9 使用@Autowired注解自动装配的过程是怎样的?
3.10 你可以在Spring中注入一个null 和一个空字符串吗?

4. spring的常用注解

4.1 什么是基于Java的Spring注解配置? 给一些注解的例子
4.2 怎样开启注解装配?
4.3 @Component, @Controller, @Repository, @Service 有何区别?
4.4 @Required 注解有什么作用
4.5 @Autowired 注解有什么作用
4.6 @Autowired和@Resource之间的区别
4.7 @Qualifier 注解有什么作用
4.8 @RequestMapping 注解有什么用?

5. spring的数据访问

5.1 JdbcTemplate是什么
5.2 Spring支持的事务管理类型, spring 事务实现方式有哪些?
5.3 说一下Spring的事务传播行为
5.4 说一下 spring 的事务隔离?
5.5 Spring框架的事务管理有哪些优点?
5.6 Spring框架的事务管理有哪些优点?
6.6 spring的面向切面编程(AOP)

6.1 什么是AOP

6.2 Spring AOP and AspectJ AOP 有什么区别?AOP 有哪些实现方式?
6.3 JDK动态代理和CGLIB动态代理的区别
6.4 如何理解 Spring 中的代理?
6.5 解释一下Spring AOP里面的几个名词
6.6 Spring通知有哪些类型?
6.7 什么是切面 Aspect?

答案

1. spring 概述部分

1.1 什么是spring?

spring是一个轻量级的JavaEE开源框架,开发spring的根本使命目的是为了企业应用开发的复杂性,即简化Java开发。
spring的两个核心特性:控制反转和面向切面编程,即IOC和AOP。
spring 的特点:

(1)轻量:从大小和开销方面而言spring都是轻量的,处理开销也是微不足道的。
(2)IOC:削减计算机之间的耦合,降低程序代码中的依赖关系。
(3)AOP:通过配置管理特性spring的AOP,可以将一些通用的任务,如安全,事务,日志等集中进行管理,提高了程序的复用性和管理型。
(4)容器:Spring提供了容器功能,容器可以管理对象的生命周期、对象与对象间的关系、我们可以通过编写XML来设置对象关系和初始值,这样容器在启动之后,所有的对象都直接可以使用,不用编写任何编码来产生对象。Spring有两种不同的容器:Bean工厂以及应用上下文。
框架:可以将简单的组件配置,组成复杂的应用,spring也提供了很多基础功能(事务管理,持久化框架集成)将应用逻辑留给开发者。

1.2 spring框架的核心?

IOC和AOP模块。通过IOC容器管理POJO或JavaBean对象,以及它们之间的耦合关系;通过AOP以动态非入侵的方式增强服务。

1.3 spring框架的优缺点

优点:

(1)方便解耦,简化开发
Spring就是一个大工厂,可以将所有对象的创建和依赖关系的维护(DI),交给Spring管理。

(2)AOP编程的支持
Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控和增强等功能。

(3)声明式事务的支持
只需要通过配置就可以完成对事务的管理,而无需手动编程。

(4)方便程序的测试
Spring对Junit4支持,可以通过注解方便的测试Spring程序。

(5)方便集成各种优秀框架
Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接支持(如:Struts、Hibernate、MyBatis等)。

(6)降低JavaEE API的使用难度
Spring对JavaEE开发中非常难用的一些API(JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低。

缺点:

(1)Spring明明一个很轻量级的框架,却给人感觉大而全,内容太庞大。
(2)Spring依赖反射,反射影响性能
(3)使用门槛升高,入门Spring需要较长时间

1.4 spring5 的主要模块构成

Spring 总共大约有 20 个模块, 由 1300 多个不同的文件构成。 而这些组件被分别整合在核心容器(Core Container) 、 AOP(Aspect Oriented Programming)和设备支持(Instrmentation) 、数据访问与集成(Data Access/Integeration) 、 Web、 消息(Messaging) 、 Test等 6 个模块中。 以下是 Spring 5 的模块结构图

(1)spring core:提供了框架的基本组成部分,包括控制反转(Inversion of Control,IOC)和依赖注入(Dependency Injection,DI)功能。
(2)spring beans:提供了BeanFactory,是工厂模式的一个经典实现,Spring将管理对象称为Bean。
(3)spring context:构建于 core 封装包基础上的 context 封装包,提供了一种框架式的对象访问方法。
(4)spring jdbc:提供了一个JDBC的抽象层,消除了烦琐的JDBC编码和数据库厂商特有的错误代码解析, 用于简化JDBC。
(5)spring aop:提供了面向切面的编程实现,让你可以自定义拦截器、切点等。
(6)spring Web:提供了针对 Web 开发的集成特性,例如文件上传,利用 servlet listeners - 进行 ioc 容器初始化和针对 Web 的 ApplicationContext。
(7)spring test:主要为测试提供支持的,支持使用JUnit或TestNG对Spring组件进行单元测试和集成测试。

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

工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例;
单例模式:Bean默认为单例模式。
代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术;
模板方法:用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。

1.6 讲解一下核心容器(spring context应用上下文) 模块

应用上下文模块是spring框架的基本模块,BeanFactory是任何以spring为基础的应用的核心,spring框架建立在context这个模块上,使得spring成为一个容器。
Bean工厂是工厂模式的一个实现,提供了控制反转的功能。用来把应用的配置和依赖真正从代码中分离出来。最常用的是根据xml文件加载bean对象进IOC容器中,使得的类是ApplicationContext的实现类org.springframework.beans.factory.xml.XmlBeanFactory。

2. spring的控制反转(IOC)

2.1 什么是Spring IOC 容器?

所谓控制反转主要是把传统上的程序直接向内存中申请空间创建对象的这个控制权转移到了外部工厂,通过工厂来对这些创建好的对象进行装配和管理。外部工厂即我们常说的IOC容器,spring IOC负责创建对象,管理对象(依赖注入,装配对象Autowride)并管理这些对象的整个生命周期。

2.2 IOC 有什么作用?

(1)管理对象的创建和依赖关系的维护。
(2)解耦降低了依赖,由容器去维护具体的对象的创建。
(3)bean对象生命周期管理。

2.3 使用IOC容器的优点?

(1)IOC和DI的配合使用能把应用的实际代码量降到最低。
(2)spring集成了自己的测试模块,无需依赖于junit。
(3)IOC容器支持立即加载和延迟加载(懒加载)。

2.4 spring IOC支持哪些功能

(1)依赖注入
(2)依赖检查
(3)自动装配
(4)支持集合

2.5 BeanFactory 和 ApplicationContext有什么区别?

BeanFactory 和 ApplicationContext都是spring的两个核心的接口,都可以当作容器来使用,其中BeanFactory是ApplicationContext父接口。它们之间的区别由:
依赖关系:BeanFactory是spring中最底层的接口,包含了各种bean的定义,读取bean的配置文档,管理bean的加载,实例化,控制bean生命周期,维护bean之间的依赖关系。
而ApplicationContext作为BeanFactory 的子接口,除了BeanFactory本身的功能外,提供了更加完善的框架功能。如:

(1)继承MessageSource,因此支持国际化。
(2)统一资源文件的访问方式
(3)同时加载多个配置文件
(4)提供监听器中注册bean的事件
加载方式:BeanFactory采用的是延迟加载的方式,即当我们要使用bean时调用getBean方法开始实例化bean对象。如此我们容易遇到就是在配置文件中忘记配置bean(未注入),而去调用它的getBean对象,将会抛出异常。
ApplicationContext是在容器启动后,创建所有的bean,比起BeanFactory的加载方式,采用ApplicationContext的加载更容易发现spring配置中的问题,有利于检查依赖是否注入,加载出来的单例bean对象,可以直接拿去用而不用等待。
创建方式:BeanFactory通常以编程的形式被创建,而ApplicationContext还能以声明的形式被创建,如ContextLoader.

2.6 ApplicationContext通常的实现是什么?

ClassPathXmlApplicationContext:此容器从xml中加载beans的定义,将在classpath中寻找bean的定义。
FileSystemXmlApplication:和ClassPathXmlApplicationContext类似从xml中加载beans的定义,但是范围可以时硬盘上的任意位置,只要有访问权限。
AnnotationConfigApplicationContext:用于读取注解创建容器。

2.8 什么是Spring的依赖注入?

依赖关系的维护又称为依赖注入,这种关系交给spring来管理,当我们在类中要用到其它的类对象,都由spring来提供,我们只需要在配置文件中说明即可,依赖注入也是IOC控制反转的一种实现。

2.9 依赖注入有什么优势?

依赖注入之所以流行,是因为它是一种很可取的方式:让r容器全权负责依赖的查询,需要注入的bean对象只需要暴露出JavaBean的setter方法或者带参数的构造函数,使得容器在初始化时组装对象依赖关系。与其依赖查找方式相比,主要的优势有:

(1)查找定位操作与应用代码无关
(2)不依赖于容器的API,可以很容易地在任何容器以外使用应用对象。
(3)不需要特殊的接口,绝大多数对象可以做到完全不必依赖容器。

2.10 有哪些不同类型的依赖注入实现方式?

依赖注入是时下最流行的IOC控制反转的一种实现,实现方式有接口注入,构造器注入,setter方法注入。其中由于接口注入的灵活性太差,于是与spring4被废弃。
构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数代表一个对其他类的依赖。
Setter方法注入:Setter方法注入是容器通过调用无参构造器或无参static工厂 方法实例化bean之后,调用该bean的setter方法,即实现了基于setter的依赖注入。

2.11 构造器依赖注入和Setter方法注入的区别


因为篇幅过长,答案没有展示完整,需要完整版的小伙伴-点击这里即可


http://chatgpt.dhexx.cn/article/84xhRkOB.shtml

相关文章

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

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

OD门OC门

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

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

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

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

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

OC门、OD门和推挽输出

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

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

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

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

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

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

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

OC门与OD门以及线与逻辑

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

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

OC门电路和OD门电路的区别 一、OC门电路是什么?二、OD门电路是什么?三、总结 一、OC门电路是什么? OC门电路:集电极开路(open collector) OC门电路的工作原理: 1)当INPUT输入高电平…

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

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

OC门、OD门与推挽输出

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

OD OC 门

在电路中常会遇到漏极开路(Open Drain)和集电极开路(Open Collector)两种情形。漏极开路电路概念中提到的“漏”是指 MOSFET的漏极。同理,集电极开路电路中的“集”就是指三极管的集电极。在数字电路中,分别…

数字电路2. OC门、OD门、三态门

数字电路2. OC门、OD门、三态门 一、OC门——集电集开路门1. 基本概念2. 作用3. 使用要点4. OC门的简单实现 二、OD门——漏极开路门四、三态门1. 概念2. 三态门的作用3. 简单仿真(1)1使能高电平(2)1使能低电平 一、OC门——集电集…

OC, OD门和线与逻辑

OC(Open Collector)门,又称集电极开路,OD(Open Drain)漏极开路,通过名称就可以判断,OC门是针对三极管来说的,而OD门是针对MOS管而言的,csdn上有很多人把OC门就…

理一理 OC/OD 门、开漏输出、推挽输出等一些相关概念

电子设计基础知识,讲一讲OC/OD门,开漏/推挽输出,以及图腾柱 ... 矜辰所致目录 前言一、OC/OD 门1.1 OC 门1.2 OD 门1.3 电路说明1.4 应用 二、开漏/推挽输出2.1 开漏输出2.2 推挽输出2.3 图腾柱 结语 前言 前几天有小伙伴问我能不能讲讲开…

OC门和OD门

OC门和OD门 OC:集电极开路(Open Collector) OD:漏极输出(Open Drain) OC门和OD门是相对于两个器件而言的,OC门是对三极管而言,OD门是对场效应管而言。 OC门电路如下所示&#xff0c…

OC门与OD门

作者:AirCity 2020.2.2 Aircity007sina.com 本文所有权归作者Aircity所有 1 OC门 集电极开路,结构如下: A0,①截止,②导通,相当于开关闭合,输出0V(实际输出不是0V,因…

OC门和OD门概念

OC门和OD门概念 OC门和OD门 OC:集电极开路(Open Collector) OD:漏极输出(Open Drain) OC门和OD门是相对于两个器件而言的,OC门是对三极管而言,OD门是对场效应管而言。 OC门电路如下…

1.3 OC与OD门(硬件基础系列)

针对设计过程的问题,欢迎各位留言评论或群内讨论! 1.3 OC与OD门 1.3.1 简介 OC(Open Collector)门又叫集电极开路门,主要针对的是BJT电路: 图1.21 OC门 OD(Open Drain)门又叫漏极开路…