面试题:Spring(一)
1. Spring框架中bean是单例么?
@Service
@Scope("singleton")
public class UserServiceImpl implements UserService { }
- singleton : bean在每个Spring IOC容器中只有一个实例。
- prototype:一个bean的定义可以有多个实例。
2. Spring框架中的单例bean是线程安全的么?

不是线程安全的 Spring框架中有一个@Scope注解,默认的值就是singleton,单例的。 因为一般在spring的bean的中都是注入无状态的对象,没有线程安全问题,如果在bean中定义了可修改的成员变量,是要考虑线程安全问题的,可以使用多例或者加锁来解决
3. AOP
Spring:AOP
AOP称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。
常见的AOP使用场景:
- 记录操作日志
- 缓存处理
- Spring中内置的事务处理
4. 事务
Spring:事务
Spring失效场景



Spring中事务失效的场景有哪些
- 异常捕获处理,自己处理了异常,没有抛出,解决:手动抛出
- 抛出检查异常,配置rollbackFor属性为Exception
- 非public方法导致的事务失效,改为public
5. bean的生命周期?


6. 如何解决Spring中的循环引用?
Spring中的循环引用
- 循环依赖:循环依赖其实就是循环引用,也就是两个或两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于A
- 循环依赖在spring中是允许存在,spring框架依据三级缓存已经解决了大部分的循环依赖
- 一级缓存:单例池,缓存已经经历了完整的生命周期,已经初始化完成的bean对象
- 二级缓存:缓存早期的bean对象(生命周期还没走完)
- 三级缓存:缓存的是ObjectFactory,表示对象工厂,用来创建某个对象的
构造方法出现循环依赖怎么解决?
当您在Spring的一个bean的依赖项上使用
@Lazy注解时,Spring不会立即创建该依赖项的bean实例。相反,它会创建一个代理对象(在大多数情况下是JDK动态代理或CGLIB代理),该代理对象会在实际调用方法时懒加载真正的bean实例。
- 当Spring尝试创建
BeanA的实例时,它注意到BeanA的构造器依赖于BeanB。- 由于
BeanB被标记为@Lazy,Spring不会立即创建BeanB的实例。相反,它会为BeanB创建一个代理对象,并将其注入到BeanA中。- 类似地,当Spring尝试创建
BeanB的实例时,它注意到BeanB的构造器依赖于BeanA。但此时,BeanA的实例已经存在(尽管它包含一个BeanB的代理),因此Spring可以安全地创建BeanB的实例(实际上是BeanB的代理所指向的实例,但在这个上下文中,重要的是BeanB的构造器不再等待BeanA的完整实例)。- 当
BeanA或BeanB中的方法首次尝试访问对方(通过代理对象)时,Spring才会实际创建并初始化缺失的bean实例。
相关文章:
面试题:Spring(一)
1. Spring框架中bean是单例么? Service Scope("singleton") public class UserServiceImpl implements UserService { }singleton : bean在每个Spring IOC容器中只有一个实例。prototype:一个bean的定义可以有多个实例。 2. Spring框架中的…...
MySQ怎么使用语法介绍(详细)
一、什么是库结构 库结构的意思就是指数据库的结构。所以,理解“库结构”就要先理解“库”是什么。 在数据库的上下文中,库指的是一个数据库。简单来说,数据库(库)是用来存储和管理数据的容器。它不仅存储实际的数据…...
新能源汽车与公共充电桩布局
近年来,全球范围内对新能源汽车产业的推动力度不断增强,中国新能源汽车市场也呈现蓬勃发展的势头,在政策与市场的共同推动下,新能源汽车销量持续增长。然而,据中国充电联盟数据显示,充电基础设施建设滞后于新能源汽车数量增长的现状导致充电桩供需不平衡,公共充电桩服务空白区域…...
【GIT】sourceTree的“当前分支“,“合并分支“与“检出分支的区别
GIT三款经典可视化 由上文文档得出灵感写出此篇 这三个概念在 Git 操作中都是很常见的, 来逐个解析: 1. 当前分支 “当前分支”就是你目前正在工作的分支。你在进行任何代码修改、提交等操作时,都会应用到“当前分支”上。换句话说…...
【Git】如何在 Git 中高效合并分支:完整指南
目录 引言1. 切换到主分支1.1 切换分支命令1.2 相关命令1.3 切换分支示意图 2. 合并分支2.1 基本合并命令2.2 合并选项2.3 合并流程示意图 3. 解决冲突3.1 解决冲突的步骤3.2 相关命令3.3 解决冲突示意图 4. 本地更新分支4.1 拉取远程更改4.2 更新主分支4.3 拉取远程更新到本地…...
成都睿明智科技有限公司抖音电商服务效果如何?
在这个短视频风起云涌的时代,抖音电商以其独特的魅力,成为了众多商家竞相追逐的新蓝海。而在这片波澜壮阔的商海中,成都睿明智科技有限公司犹如一艘稳健的航船,引领着无数企业驶向成功的彼岸。今天,就让我们一起揭开成…...
收集的linux命令/Docker命令/git命令
查看linux发行版本 lsb_release -a显示操作系统的发行版号 uname -r1. 启动 Docker。 sudo systemctl start docker2. 通过运行映像来验证 Docker 引擎安装是否成功。hello-world sudo docker run hello-world查看docker版本 docker -v查看docker配置信息 docker infodoc…...
DNS域名解析实验
准备工作 [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# mount /dev/sr0 /mnt [rootlocalhost ~]# dnf install bind -y DNS正向解析: 对主配置文件进行修改 [rootlocalhost ~]# vim /etc/named.conf 正向解析…...
Dify 本地部署指南
一、前置条件 Clone Dify 代码: git clone https://github.com/langgenius/dify.git 在启用业务服务之前,我们需要先部署 PostgresSQL / Redis / Weaviate(如果本地没有的话),可以通过以下命令启动: cd…...
15分钟学 Go 第 38 天:数据库基础
第38天 - 数据库基础 学习目标 学习如何连接和操作数据库,包括基本的增、删、改、查功能,以及如何使用Go语言中的database/sql包进行数据库交互。 内容概述 在现代应用程序中,数据库是数据持久化的重要部分。Go语言通过database/sql包提供…...
【Python】图片处理
一、获取图片尺寸 优点缺点Pillow功能丰富,支持多种图像处理操作。使用简单,适合快速原型开发。对于处理大型图像或批量图像时,性能可能不如OpenCV。OpenCV性能强大,适合处理大型图像和视频处理。提供了丰富的计算机视觉算法。相…...
面相小白的php反序列化漏洞原理剖析
前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文整理反序列化漏洞的一些成因原理 建议学习反序列化之前 先对php基础语法与面向对象有个大体的了解 (我觉得我整理的比较细致,了解这俩是个啥就行) 漏洞实战情况 这个漏洞黑盒几乎不会被发现&am…...
文本转SQL(Text-to-SQL),场景介绍与 Spring AI 实现
在众多的 AI 大模型的应用场景中,Text-to-SQL,也就是文本转 SQL,是其中实用性很高的一个。Text-to-SQL 充分利用了大模型的优势,把用户提供的自然语言描述转换成 SQL 语句,还可以执行生成的 SQL 语句,再把查…...
科研绘图系列:R语言组合堆积图(stacked plot)
文章目录 介绍加载R包数据数据预处理画图1画图2组合图形系统信息介绍 堆积图(Stacked Chart),也称为堆叠图,是一种常用的数据可视化图表,主要用于展示不同类别的数据量在总体中的分布情况。堆积图可以是柱状图、条形图或面积图的形式,其中各个类别的数据量被叠加在一起,…...
YOLOv11及自研模型更新汇总
YOLOv11使用教程:YOLOv11入门到入土使用教程(含结构图) 缝合教程:深度学习模块创作(缝合)教程|适合1-360月小宝宝食用,干货满满 YOLO中的yaml文件详解:https://xy2668825911.blog.csdn.net/article/details…...
系统安全架构
一个完整的信息安全系统至少包含三类措施: 技术方面的安全措施, 管理方面的安全措施 相应的政策法律。 网络安全威胁 授权侵犯:为某一特权使用一个系统的人却将该系统用作其他未授权的目的。假冒:一个实体(人或系统)假装成另一个实体非法…...
Qt(程序打包)
Qt开发的程序最终都是要给用户使用的,用户的电脑上不可能装一个Qt的开发环境导入项目使用。因此项目项目开发完成后需要打包——制作成安装包,用户直接下载并安装即可使用。 1. 设置图标 设置图标的操作步骤如下: 1. 准备好图标文件ÿ…...
牛客sql题目总结(1)
1.第N高的薪水 AC: create function getnthhighestsalary(n int) returns int begindeclare m int; set m n - 1; return (select distinct salaryfrom employeeorder by salary desclimit m, 1); end 2.平均播放进度大于60%的视频类别 AC: select tb_video_info…...
RocketMQ 自动注入消费者
目录 前言一、情景介绍二、问题分析三、代码实现 前言 之前接到一个需求,我们项目的技术负责人希望通过配置的形式,在项目启动的时候自动根据配置生成对应的消费者 觉得还有点意思,随即记录一下~ 一、情景介绍 比如我这里有一个消费者 Mes…...
RibbitMQ-安装
本文主要介绍RibbitMQ的安装 RabbitMQ依赖于Erlang,因此首先需要安装Erlang环境。分别下载erlang-26.2.5-1.el7.x86_64.rpm、rabbitmq-server-4.0.3-1.el8.noarch.rpm 官网地址:https://www.rabbitmq.com/ 官网文档:https://www.rabbitmq.c…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
