Spring框架面试题
-
springboot的自动装配原理
主类上的@SpringBootApplication存在@EnableAutoConfiguration,@EnableAutoConfiguration会导入AutoConfigurationImportSelector组件,其AutoConfigurationImportSelector$AutoConfigurationGroup#process()方法会读取当前应用所有依赖jar中的自动配置类。过程是通过SpringFactoriesLoader.loadFactoryNames()读取spring.factories中EnableAutoConfiguration对应的配置类,然后使用三种类型的条件注解判断能否导入,分别是OnBeanCondition(判断Bean)、OnClassCondition(判断类)、OnWebApplicationCondition(判断应用类型,部分Bean只会在web中被创建)。 -
springboot容器定制的实现
spring在创建web容器时会去获取创建容器的ServletWebServerFactory工厂,即ServletWebServerFactory接口的实现类对象,默认有TomcatServletWebServerFactory、JettyServletWebServerFactory、UndertowServletWebServerFactory,因此spring默认支持tomcat、jetty、undertow这三种web容器,具体使用哪个是由作用在ServletWebServerFactoryConfiguration的子类上的条件注解判断的,例如@ConditionalOnClass({ Servlet.class, Tomcat.class, UpgradeProtocol.class }),如果检测到应用中存在Servlet、Tomcat、UpgradeProtocol这三个跟tomcat相关的类时,就会使用tomcat作为web容器。 -
spring的循环依赖
spring中循环依赖有三种可能,分别是set注入、构造器注入、@DepondOn注解声明导致的循环依赖,构造器注入、@DepondOn注解声明导致的循环依赖是无法解决的,解决set注入的过程是:spring反射调用构造函数创建bean之后,将获取bean的lambda表达式缓存下来,等bean完成了属性填充之后,将完整的bean再缓存下来。出现循环依赖时,spring先尝试获取完整的属性已经被填充的bean,没获取则获取属性没有被填充的bean,否则通过lambda表达式获取bean,此时可能会拿到代理对象,再加入二级缓存即保存没有被填充的bean。 -
@Autowired注解原理
spring是用AutowiredAnnotationBeanPostProcessor处理@Autowired注解的,首先提取要注入的字段和注解的属性,然后根据类型到容器中找到相应的bean,如果是有多个候选bean,则优先使用@Primary标记的bean,再就是根据@Priority注解的值越大优先级越高,找到了bean之后就反射写入属性中,完成依赖注入 -
spring的设计模式
参考spring常见设计模式 -
Bean的初始化方法:@Bean注解的initMethod属性指定的方法、@PostConstruct注解标注的方法、实现InitializingBean接口的afterPropertiesSet()方法
-
spring容器启动的过程
- 根据类的加载情况判断当前应用类型,默认是servlet
- 从spring.factories配置文件中读取初始化器和监听器
- 容器启动时在各个阶段发布不同的事件,ConfigFileApplicationListener配置文件监听器会监听ApplicationEnvironmentPreparedEvent事件,此时会去读取当前应用的配置文件,添加到配置源中
- 容器的后置处理器发挥作用,扫描应用中的Class,处理@Configuration注解,生成Bean定义注入容器
- 对容器中的所有Bean进行实例化
- 调用实现了ApplicationRunner和CommandLineRunner接口的Bean实现的方法
-
事务失效
- 构造拦截器链时会对CglibMethodInvocation实例化,此时会判断事务方法的权限,不可为非public的方法,不可为Object类中的方法
- 事务底层是通过动态代理实现的,需要对原方法进行重写,所有事务方法不可为final
- 事务声明的类必须由spring容器托管,否则不会创建代理对象;必须通过代理对象调用事务方法,才能对事务方法进行增强处理,如果调用本类中方法则会失效
- 方法内如果自己捕获了异常则不会发生回滚
-
dispatchservlet处理请求的过程
根据请求的url找到能够处理请求的方法method,创建HandlerMethod用来对请求和方法进行封装,获取拦截器,生成执行器链,创建处理器适配器,对请求进行处理,生成响应。 -
@SpringBootApplication注解包含三个注解,分别是
- @SpringBootConfiguration包含@Configuration注解,可以让容器解析处理
- @EnableAutoConfiguration是自动配置类注解,用于实现springboot的自动装配
- @ComponentScan用来指定类的扫描路径,默认为主类所在的包路径
相关文章:
Spring框架面试题
springboot的自动装配原理 主类上的SpringBootApplication存在EnableAutoConfiguration,EnableAutoConfiguration会导入AutoConfigurationImportSelector组件,其AutoConfigurationImportSelector$AutoConfigurationGroup#process()方法会读取当前应用所有…...
纯x86汇编实现的多线程操作系统实践 - 第五章 AP的守护执行
AP的32位保护模式代码的后半部分从0x8001C000开始执行,完成的工作主要有:初始化必要的中断给BSP发送启动成功的消息创建各AP的系统进程创建各AP的用户进程循环显示各AP中用户进程执行的时间比例5.1 初始化中断5.1.1总体初始化各AP调用init_interrupt_fun…...
2023年全国最新高校辅导员精选真题及答案7
百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 71.在北京曾经发现一处战国时期的遗址,从中出土了燕、韩、赵、魏等国铸币3876…...
使用windwow windbg 吃透64位分页内存管理
前言 分页基础概念是操作系统基础知识,网上已经有太多太多了。所以本文记录使用windwow内核调试工具验证理论知识。 具体可以参阅intel volume3的 4.1.1 Four Paging Modes章节。 简而言之:CR0.PG 0表示不开启分页.并且根据CR4各种标志开启不同类别的…...
Java知识复习(五)JVM虚拟机
1、虚拟机的自动内存管理和C/C的区别 C/C开发程序时需要为每一个new操作去写对应的delete/free操作,不容易出现内存泄漏和溢出问题。而Java程序将内存控制权交给了Java虚拟机 2、JVM的运行机制 1、Java程序的具体运行过程如下: Java源文件被编译器编…...
房屋出租管理系统
1. 铺垫 1.1 项目真实开发的过程 上来要做什么???? 有电脑—》配环境(JDK、IDEA、MAVEN……) 这个项目:房屋管理系统 从什么角度出发,第一步做什么?? 架构 …...
2023年全国最新食品安全管理员精选真题及答案6
百分百题库提供食品安全管理员考试试题、食品安全员考试预测题、食品安全管理员考试真题、食品安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 51.制定《中华人民共和国食品安全法》的目的是为了保证食品安全…...
C++中的文件操作
文件操作 所有数据程序运行结束后都会释放通过文件可以将数据持久化头文件文件类型分为两种 文本文件—文件以文本的ASCII码形式存储在计算机中二进制文件—文件以文本的二进制存储在计算机中 操作文件的三大类 ofstream—写操作ifstream—读操作fstream—读写操作 文本文件 写…...
监控生产环境中的机器学习模型
简介 一旦您将机器学习模型部署到生产环境中,很快就会发现工作还没有结束。 在许多方面,旅程才刚刚开始。你怎么知道你的模型的行为是否符合你的预期?下周/月/年,当客户(或欺诈者)行为发生变化并且您的训练…...
15s了解什么是物联网技术
目录 15s了解什么是物联网技术 15s了解什么是物联网技术 什么是物联网技术。 简单地说,物联网就是把所有的物体连接起来,相互作用,形成一个互联互通的网络,这就是物联网。如果说互联网是我们身体的虚拟大脑,那么物联网就是我们身体的感知系统,就像眼睛和耳朵-样,让我们…...
敲出来的真理-mysql备份大全,备份命令,还原命令,定时备份
mysqldump命令全量备份数据全量标准语句格式mysqldump -h主机名 -P端口 -u用户名 -p密码 –database 数据库名 > 文件名.sql 1.备份全部数据库的数据和结构mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql2.备份全部数据库的结构(加 -d 参数&#x…...
ATTCK实战系列-红队评估(一)
from ATT&CK实战系列-红队评估(一) 环境搭建 下载地址:http://vulnstack.qiyuanxuetang.net/vuln/detail/2/ 将三个虚拟机启动起来 除了windows 7那个主机,其他都只设置成仅主机模式 windows 7添加两个网卡,一个是仅主机,一个是NAT …...
学python的第二天---差分
一、改变数组元素(差分)方法一:差分数组map(int,input().split())for b in arr[:n]:print(1 if b else 0,end )方法二:区间合并interval.sort(keylambda x:x[0])二、差分a [0] list(map(int, input().split())) a[n 1:]三、差…...
数据结构入门5-2(数和二叉树)
目录 注: 树的存储结构 1. 双亲表示法 2. 孩子表示法 3. 重要:孩子兄弟法(二叉树表示法) 森林与二叉树的转换 树和森林的遍历 1. 树的遍历 2. 森林的遍历 哈夫曼树及其应用 基本概念 哈夫曼树的构造算法 1. 构造过程 …...
把Redis当作队列来用,到底合适吗?
文章目录 前言从最简单的开始:List 队列发布/订阅模型:Pub/Sub趋于成熟的队列:Stream1) Stream 是否支持「阻塞式」拉取消息?2) Stream 是否支持发布 / 订阅模式?3) 消息处理时异常,Stream 能否保证消息不丢失,重新消费?4) Stream 数据会写入到 RDB 和 AOF 做持久化吗?…...
Python学习-----项目设计1.0(设计思维和ATM环境搭建)
目录 前言: 项目开发流程 MVC设计模式 什么是MVC设计模式? ATM项目要求 ATM项目的环境搭建 前言: 我个人学习Python大概也有一个月了,在这一个月中我发布了许多关于Python的文章,建立了一个Python学习起步的专栏…...
(九)python网络爬虫(理论+实战)——爬虫实战:指定关键词的百度新闻爬取
系列文章目录 (1)python网络爬虫—快速入门(理论+实战)(一) (2)python网络爬虫—快速入门(理论+实战)(二) (3) python网络爬虫—快速入门(理论+实战)(三) (4)python网络爬虫—快速入门(理论+实战)(四) (5)...
数据分析面试、笔试题汇总+解析(六)
(接上篇) 面试题(MySQL篇) 3. 如何提高MySQL的查询速度? 考点解析: 考察面试者对MySQL查询优化的理解 参考答案: (因为这个问题如果回答的详细一点可以写上一整篇,…...
vue3+rust个人博客建站日记3-编写主页
内容 绘制了主页的基本布局设置了封装了header栏组件并设置了全局黑夜模式. 选择一个组件库-Naive UI 如果没有设计能力,又想开发出风格统一的前端页面。就一定要选择一个漂亮的组件库。 本次项目选择使用Naive UI,NaivUI库曾被Vue框架作者尤雨溪推荐…...
前端常考react面试题(持续更新中)
react diff 算法 我们知道React会维护两个虚拟DOM,那么是如何来比较,如何来判断,做出最优的解呢?这就用到了diff算法 diff算法的作用 计算出Virtual DOM中真正变化的部分,并只针对该部分进行原生DOM操作,而…...
树莓派C语言工程建立
从原来例子程序中拷贝一个例子例如blink目录到myPrj目录下,再拷贝其他几个文件,最终示意如下:修改CMakeLists.txt 文件,去除add_subdirectory(…)语句和add_subdirectory_exclude_platforms(…)语句,在最后增加 add_su…...
Windows上搭建PostgreSQL监控神器:Grafana+Prometheus+Postgres_Exporter保姆级干货教程
❓想要实时掌握 PostgreSQL 数据库的运行状态? 👀想知道复制延迟、锁等待这些核心指标? 🆒这里是Moshow的「CSDN https://zhengkai.blog.csdn.net/」 🚀这篇文章带你从零开始,在 Windows 上搭建一套企业…...
戴尔Precision Pro商务笔记本回归,新一代产品聚焦便携性
看起来2026年是戴尔按下重启键的一年——在消费者和商用产品线中,戏剧性的品牌重塑都在被回归。有时候,老品牌确实是好品牌:熟悉的XPS名称和设计今年回归是有原因的,绝对不是因为戴尔Premium有正面的品牌认知度。在戴尔商务产品方…...
COMSOL—超声相控阵聚焦仿真 模型介绍:激励函数是由高斯波和正弦波组成的脉冲函数
COMSOL—超声相控阵聚焦仿真 模型介绍:激励函数是由高斯波和正弦波组成的脉冲函数超声相控阵这玩意儿在工业检测和医学影像里玩得可溜了,今天咱们整点硬核的——用COMSOL搞个带高斯调制的超声聚焦仿真。先看这个模型的灵魂所在:激励信号设计。…...
staticFunctional:嵌入式零堆内存的std::function替代方案
1. staticFunctional:嵌入式系统中零动态内存开销的 std::function 替代方案1.1 设计动因与工程痛点在资源受限的嵌入式系统(如 ARM Cortex-M0/M4、AVR、ESP32、Teensy 系列)中,std::function的标准实现存在根本性兼容障碍。其典型…...
VSCode远程连接报错?手把手教你修复settings.json文件(附常见错误排查)
VSCode远程连接报错终极排查指南:从settings.json修复到SSH配置优化 当你正准备通过VSCode远程连接服务器投入工作时,突然弹出的Failed to write remote.SSH.remotePlatform报错就像一盆冷水浇下来。更令人抓狂的是,明明命令行SSH连接一切正常…...
机器学习期末实战:从线性回归到SVM的考题详解(附答案推导)
机器学习期末实战:从线性回归到SVM的考题详解(附答案推导) 期末考试临近,不少同学对机器学习中的核心算法仍存在理解盲区。本文将以典型考题为切入点,深入剖析线性回归、高斯朴素贝叶斯和软间隔SVM的解题逻辑ÿ…...
图像处理小技巧:如何用Photoshop和Python模拟近红外摄影效果
图像处理小技巧:如何用Photoshop和Python模拟近红外摄影效果 近红外摄影以其独特的视觉效果在艺术创作和科学分析领域广受欢迎。传统的近红外摄影需要特殊滤镜和改装相机,但通过数字图像处理技术,我们完全可以在不改变硬件设备的情况下&#…...
2026年AI大爆发:DeepSeek、Claude、Gemini三强鼎立,智能体应用成为新战场
进入2026年,AI领域迎来前所未有的激烈竞争格局。DeepSeek凭借极低的训练成本和开源策略强势出圈,R1模型在推理能力上直追GPT-o1,引发全球AI圈震动;Anthropic的Claude 3.7 Sonnet推出了扩展思考模式,在代码和复杂推理任…...
nli-distilroberta-base环境部署:Docker容器内Python依赖与模型权重加载验证
nli-distilroberta-base环境部署:Docker容器内Python依赖与模型权重加载验证 1. 项目概述 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)Web服务。它能智能分析两个句子之间的关系,判断它们之间的逻辑关联。这项技术在智能客…...
