Spring框架原理面试题及参考答案
目录
什么是Spring 开发框架?
说说Spring 的 IOC 和 DI?
简述IoC(控制反转)及在 Spring 中的实现
说说Spring IOC 容器的基本概念?
说说Spring IoC 的实现机制?
说说Spring IoC 容器?
简述Spring ApplicationContext
说说Spring Bean 的生命周期
说说在 Spring Bean 的生命周期中可扩展的重要方法
说说Spring Bean 的初始化和销毁方法
如何在 Spring 中实现自定义的 Bean 初始化和销毁方法
如何在 Spring 中定义一个 Bean 的作用域
基于 Java 配置类开启注解装配
基于 XML 配置文件开启注解装配
启用自动装配注解
详细说将类声明为 Spring 的 bean 的注解有哪些方式
使用 @Component 及其衍生注解
使用 @Bean 注解
@Service
@Repository
@Configuration
@Bean
详细说 @Component 和 @Bean 的区别
定义位置和方式
作用范围和语义
Bean 的命名方式
依赖注入的灵活性
@Component、@Controller、@Repository、@Service 的区别
@Component
@Controller
@Repository
@Service
说说@Required 注解的作用
说说@Autowired 注解的作用
在属性上使用 @Autowired
在构造函数上使用 @Autowired
在方法上使用 @Autowired
@Autowired 和 @Resource 之间的区别
来源和所属框架
注入方式和匹配策略
可注入的资源类型
@Qualifier 注解的作用
详细讲讲Spring 的自动装配
自动装配的方式
自动装配的实现机制
自动装配的优点
什么是 bean 的自动装配
不同方式的自动装配,spring 自动装配 bean 有哪些方式
按类型自动装配
按名称自动装配
基于构造函数的自动装配
基于 Setter 方法的自动装配
说说使用 @Autowired 注解自动装配的过程
Sping 构造器依赖注入和 Setter 方法注入的区别
注入时机
注入的强制性
可变性
可测试性
解释什么是 Spring Bean 的装配方式
基于 XML 配置文件的装配
基于 Java 配置类的装配
基于注解的自动装配
基于构造函数的装配
基于 Setter 方法的装配
什么是 setter 注入和构造器注入?它们之间有什么区别
setter 注入
构造器注入
两者的区别
Sprint 配置 Bean 的方式
基于 XML 配置文件
基于 Java 配置类
基于注解自动装配
Spring 提供的配置方式有哪些?
XML 配置方式
Java 配置方式
注解配置方式
混合配置方式
Spring 基于 xml 注入 bean 的方式是怎样?
构造函数注入
Setter 方法注入
内部 Bean 注入
Spring 中出现同名 bean 的处理方式
基于 XML 配置
基于注解注入
解决同名 bean 问题的方法?
Spring 的内部 bean
Spring 的 AOP 理解
核心概念
工作原理
优势
Spring AOP 里面的关键词有哪些?
切面(Aspect)
连接点(Join Point)
通知(Advice)
切入点(Pointcut)
目标对象(Target Object)
代理对象(Proxy Object)
Spring 通知(Advice)的类型有哪些
前置通知(Before Advice)
后置通知(After Advice)
返回通知(After Returning Advice)
异常通知(After Throwing Advice)
环绕通知(Around Advice)
说说Spring 的 Advice 的执行顺序
前置通知(Before Advice)
环绕通知(Around Advice)
后置通知(After Advice)
返回通知(After Returning Advice)
异常通知(After Throwing Advice)
AOP 的定义
Spring 实现 AOP 的方式
创建切面类
定义通知方法
定义切入点表达式
切入点的定义
定义切入点表达式的方式
连接点(Joinpoint)及其与切入点的区别
连接点的定义
与切入点的区别
在 Spring AOP 中使用 @Around 注解实现环绕通知
创建切面类并添加 @Aspect 注解
定义环绕通知方法并添加 @Around 注解
定义切入点表达式
@AspectJ 注解的作用
定义切面类
定义通知方法
定义切入点表达式
Spring AOP 和 AspectJ AOP 的区别
实现方式
功能完整性
性能
开发复杂性
应用场景
声明式的事务管理及 Spring 的实现方式
声明式事务管理的定义
Spring 实现声明式事务管理的方式
Spring 事务的实现方式
Spring 事务的实现原理
Spring 中如何配置事务
解释一下 Spring 事务的隔离级别
如何解决 Spring 事务中的脏读、不可重复读和幻读问题
Spring 事务的传播行为有哪些?分别在什么情况下使用?
什么是 Spring 事务?有哪些特性?
Spring MVC 的请求处理流程是怎样的
模型(Model)与视图(View)在 Spring MVC 中的角色
如何使用 @ModelAttribute 注解进行模型数据绑定
Spring MVC 中如何处理异常
在 Spring MVC 中实现文件上传
什么是视图解析器(ViewResolver)
Spring Boot 的优点
Spring Boot Starter
在 Spring Boot 中实现自动配置
Spring Boot 的配置文件 application.properties 的作用
如何使用 Spring Boot Actuator 监控应用
Spring Boot CLI
在 Spring Boot 中实现自定义的错误页面
在 Spring Boot 中使用 Profiles 管理不同环境的配置
Spring Boot 的自动配置是如何实现的
在 Spring Boot 中进行配置文件的管理
Spring Boot 中的 starter 有什么作用
如何在 Spring Boot 中实现热部署
使用 Spring Boot DevTools
使用 JRebel
配置 IDE 的热部署功能
Spring 如何支持 JDBC 访问数据库
提供统一的异常处理
提供模板类简化操作
支持数据库连接池
提供事务管理支持
解释 Spring 中的 ORM 支持,常见的 ORM 框架有哪些
常见的 ORM 框架
Spring 对 ORM 框架的支持
如何使用 Spring Data JPA 进行数据访问
添加依赖
定义实体类
创建数据访问接口
在业务逻辑中使用数据访问接口
Spring 中如何使用 JdbcTemplate
配置数据源
创建 JdbcTemplate 实例
使用 JdbcTemplate 执行数据库操作
如何在 Spring 中实现数据库的多数据源支持
配置多个数据源
创建多个 JdbcTemplate 实例
确定数据源的使用策略
Spring Security 的主要功能
身份验证
授权
防止跨站请求伪造(CSRF)
会话管理
安全过滤链
集成其他框架
身份验证(Authentication)与授权(Authorization)
身份验证
授权
两者关系
在 Spring 中配置基于表单的登录
依赖配置
配置类创建
表单页面设置
注销配置
解释 @PreAuthorize 注解的作用
如何实现基于角色的访问控制
定义角色
配置用户角色关系
配置安全规则
方法级别权限控制
在 Spring Security 中,如何配置 CSRF 保护
启用 CSRF 保护
生成 CSRF 令牌
验证 CSRF 令牌
排除不需要 CSRF 保护的请求
JDK 动态代理和 CGLIB 动态代理的区别
实现原理
性能方面
适用场景
局限性
DataSource
JdbcTemplate
NamedParameterJdbcTemplate
SimpleJdbcInsert
SimpleJdbcCall
BeanDefinition 的作用
描述 Bean 的基本信息
支持 Bean 的配置和定制
实现 Bean 的懒加载和延迟初始化
支持 Bean 的继承和抽象定义
作为 Spring 容器内部管理的核心数据结构
Bean 实例化中的扩展
自定义实例化逻辑
后置处理器
初始化和销毁方法
工厂方法实例化
基于注解的实例化
JavaBean 和 SpringBean 和对象的区别
JavaBean
SpringBean
对象
三者关系
RequestMapping 注解的作用
映射请求路径
支持多种请求方式
什么是Spring 开发框架?
Spring 是一个开源的 Java 应用程序框架,它为企业级应用开发提供了全面的基础设施支持。其核心特性包括依赖注入(DI)、面向切面编程(AOP)、数据访问抽象以及事务管理等。
</
相关文章:
Spring框架原理面试题及参考答案
目录 什么是Spring 开发框架? 说说Spring 的 IOC 和 DI? 简述IoC(控制反转)及在 Spring 中的实现 说说Spring IOC 容器的基本概念? 说说Spring IoC 的实现机制? 说说Spring IoC 容器? 简述Spring ApplicationContext 说说Spring Bean 的生命周期 说说在 Spring…...
Java类的static成员以及代码块(详细版)
文章目录 一、什么是static成员二、static修饰的成员有何意义三、static修饰成员变量四、static修饰成员方法4.1、静态成员变量不可以在方法内创建4.2、静态成员方法内部不可以访问非静态成员变量4.3、总结 五、static成员变量的初始化5.1、就地初始化5.2、静态代码块初始化 六…...
Opensearch集群部署【docker、服务器、Helm多种部署方式】
操作系统兼容性 我们建议在 Red Hat Enterprise Linux (RHEL) 或使用systemd的基于 Debian 的 Linux 发行版上安装 OpenSearch ,例如 CentOS、Amazon Linux 2 和 Ubuntu Long-Term Support (LTS)。OpenSearch 应该适用于大多数 Linux 发行版,但我们只测…...
本地Docker部署开源WAF雷池并实现异地远程登录管理界面
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
性能需求笔记
名称解释 系统用户:所有注册过的用户;在线用户:某时间段内登录且在线的用户 pv:用户浏览页面的次数 UV:登录系统的用户,uv课产生多个pv 性能测试:测试软件在系统中的运行性能,度量系…...
ts:数组的常用方法(reduce累加)
ts:数组的常用方法(reduce累加) 一、主要内容说明二、例子reduce方法(累加)1.源码1 (reduce方法)2.源码1运行效果 三、结语四、定位日期 一、主要内容说明 ts中数组的reduce方法,用…...
Begin
cpp 编程的发展方向还是很多的:游戏、嵌入式、QT、客户端、服务端、机器学习、算法大模 型 ...,现阶段还是不太清楚具体想走什么方向。主QT编程应该是不在考虑之内的,可以为辅简单 学习一下;游戏方向:需要学习lua语言…...
【实战案例】Django框架表单处理及数据库交互
本文基于之前内容列表如下: 【图文指引】5分钟搭建Django轻量级框架服务 【实战案例】Django框架基础之上编写第一个Django应用之基本请求和响应 【实战案例】Django框架连接并操作数据库MySQL相关API 【实战案例】Django框架使用模板渲染视图页面及异常处理 更新编…...
python开发工具是选择vscode还是pycharm?两款软件优缺点对照!
Pycharm和VSCode是两款流行的代码编辑器,它们都有各自的优缺点和适用情况。本文将从以下几个方面对它们进行比较和分析: 功能和扩展性性能和稳定性用户体验和界面价格和支持 功能和扩展性 Pycharm是一款专为Python开发而设计的集成开发环境(…...
2025选题|基于Hadoop的物品租赁系统的设计与实现
作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,…...
【Qt】QTableView添加下拉框过滤条件
实现通过带复选框的下拉框来为表格添加过滤条件 带复选框的下拉框 .h文件 #pragma once #include <QCheckBox> #include <QComboBox> #include <QEvent> #include <QLineEdit> #include <QListWidget>class TableComboBox : public QComboBox …...
部署DNS主从服务器
一。DNS主从服务器作用: DNS作为重要的互联网基础设施服务,保证DNS域名解析服务的正常运转至关重要,只有这样才能提供稳定、快速日不间断的域名查询服务 DNS 域名解析服务中,从服务器可以从主服务器上获取指定的区域数据文件&…...
从可逆计算看低代码
2020年低代码(LowCode)这一buzzword频繁亮相于主流技术媒体,大背景下是微软/亚马逊/阿里/华为等巨头纷纷入场,推出自己的相应产品。一时之间,大大小小的技术山头,无论自己原先是搞OA/ERP/IOT/AI的ÿ…...
设计模式最佳实践代码总结 - 结构型设计模式篇 - 侨接设计模式最佳实践
目录 侨接设计模式最佳实践 侨接设计模式最佳实践 桥接模式是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们可以独立地变化。桥接模式是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们可以独立地变化。…...
【软件测试】python——Unittest
UnitTest 框架 笔记来自于黑马程序员python自动化测试教程,python从基础到Uinttest框架管理测试用例。链接:[黑马程序员python自动化测试教程,python从基础到Uinttest框架管理测试用例](https://www.bilibili.com/video/BV1av411q7dT?spm_i…...
Maven:详解 clean 和 install 命令的使用
clean 的主要功能是清理项目构建过程中生成的所有临时文件和输出文件。具体来说,clean 阶段会删除 target 目录及其所有内容。 clean 阶段的具体功能 删除 target 目录: target 目录是 Maven 构建过程中默认的输出目录,存放所有构建生成的文件…...
HTTP与RPC
一、概念 HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种应用层协议,主要用于在Web服务器之间传输html页面和其他Web资源。 RPC(Remote Procedure Call,远程过程调用) 是一种通用的远程调用通信协议&#…...
解决蓝牙键盘按键错乱的问题
最近发现我的蓝牙键盘按下的键盘与实际不符,于是就上网搜索答案,网上的方法都试了一遍 最后想着准备退货,没想到客服直接给我解决了 原因很简单,就是之前误触了键盘的某些按键导致的 每个键盘品牌的按键因该都不同的,可…...
MiL.k X Biggie 奇妙宇宙来袭!
MiL.k 和亚航奖励计划联手推出 MiL.k X BIGGIE 奇妙宇宙,为亚航会员和 MiL.k 用户提供神奇的 Web3 体验。这款沉浸式体验位于 The Sandbox 的 MiL.k Land,提供趣味游戏,解锁令人兴奋的新奖励。 亚航吉祥物 BIGGIE 和他友好的机舱服务员将引导…...
云服务器中删除非空目录(包含文件和子目录)rm -rf <directory_name>
在云服务器中删除目录可以使用 rm 命令。如果您需要删除一个非空目录(包含文件和子目录),可以使用以下命令: rm -rf <directory_name>参数解释: -r:递归删除,即删除目录及其所有内容&am…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
IDEA运行Tomcat出现乱码问题解决汇总
最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
