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操作,而…...
UML 关系详解
依赖(Dependency)含义:一个类的变化会影响到另一个类,但反之不一定。这是一种“使用”关系,通常是临时的、较弱的。典型场景:一个类作为另一个类方法的局部变量、方法参数,或调用静态方法。UML表…...
ChatGPT Instagram内容策略失效真相(92%运营者忽略的算法适配层)
更多请点击: https://intelliparadigm.com 第一章:ChatGPT Instagram内容策略失效的底层归因 Instagram 的算法演进与用户行为迁移,正系统性瓦解基于通用大模型(如 ChatGPT)生成的“模板化内容策略”。其失效并非源于…...
机器人伦理工程化:从道德困境到可解释决策系统的技术实现
1. 项目概述:当机器人需要做出道德抉择十年前,当我在实验室里调试一台协作机器人的碰撞检测算法时,一个从未预想过的问题出现了:在一条狭窄的通道里,机器人的移动路径上同时出现了一位匆忙的工程师和一个价值百万的实验…...
交完Essay才发现Turnitin更新了AI检测?我是这么应对的
上学期我的一个朋友被约谈了。 教授发邮件说:"你的Essay和AI生成文本相似度过高,请来办公室解释。" 他确实用了AI——谁没用呢——但他也认真改写了好几遍。问题是,Turnitin在2025年更新了AI检测模型,现在它不只看词汇…...
LeetCode 1665.完成所有任务的最少初始能量:排序(贪心)
【LetMeFly】1665.完成所有任务的最少初始能量:排序(贪心) 力扣题目链接:https://leetcode.cn/problems/minimum-initial-energy-to-finish-tasks/ 给你一个任务数组 tasks ,其中 tasks[i] [actuali, minimumi] : actuali 是完…...
基于Helm Chart在Kubernetes中部署docker-mailserver邮件服务器
1. 项目概述与核心价值最近在折腾自建邮件服务器,发现了一个宝藏项目:docker-mailserver。它把邮件服务里那些复杂的组件,比如 Postfix、Dovecot、SpamAssassin、ClamAV 这些,全都打包进了一个 Docker 镜像里,开箱即用…...
实证论文不用愁!虎贲等考 AI 数据分析:零代码跑模型,图表 + 结论一键生成
在本科、硕士毕业论文写作中,数据分析往往是最让学生头疼的章节。不会数据清洗、不懂模型选择、跑不出稳健结果、图表不会做、文字不会写,即便前面内容写得再完整,第四章一塌糊涂,整篇论文直接被导师打回。 传统软件如 Stata、Py…...
观察Taotoken用量看板如何帮助团队透明化管理API成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察Taotoken用量看板如何帮助团队透明化管理API成本 作为团队的技术负责人,管理大模型API成本是一项持续且细致的工作…...
Bose-Hubbard模型与量子Gibbs态模拟技术解析
1. Bose-Hubbard模型与量子模拟基础在量子多体物理研究中,Bose-Hubbard模型作为描述玻色子在周期性势场中行为的标准模型,已成为连接理论预测与实验验证的关键桥梁。这个看似简单的模型却能展现出丰富的物理现象,从超流态到Mott绝缘态的量子相…...
Ante语言:精化类型与生命周期推断在系统编程中的实践探索
1. 项目概述:Ante,一个探索系统编程新范式的语言 最近在关注系统级编程语言的发展,发现了一个很有意思的项目:Ante。这并非一个成熟的生产级工具,而更像是一个充满野心的“实验室”。它的核心目标,是尝试将…...
