黑马Java面试笔记之框架篇(Spring、SpringMvc、Springboot)

article/2025/8/2 23:58:28

一. 单例bean

Spring框架中的单例bean是线程安全的吗?

         Spring框架中的bean是单例的,可以在注解@Scope()进行设置

 

  •  singleton:bean在每一个Spring IOC容器中只有一个实例。
  • prototype:一个bean的定义可以有多个实例

总结

二. AOP

        AOP称为面向切面编程,用于将那些与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。

        以下详细说明一下AOP的使用场景

2.1 记录操作日志

        当用户请求时,需要记录请求中的请求方式、访问地址等信息,

代码分析如下:

2.2 Spring中的事务是如何实现的

Spring支持编程式事务管理和声明式事务管理两种方式。

  • 编程式事务控制:需使用TransactionTemplate来进行实现,对业务代码有侵入性,项目中很少使用
  • 声明式事务管理:声明式事务管理建立在AOP之上的。其本质是通过AOP功能,对方法前后进行拦截,将事务处理的功能编织到拦截的方法中,也就是在目标方法开始之前加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。

         在业务逻辑之前开启事务,在业务逻辑执行之后提交事务,如果出现异常,则进行回滚,要在方法前面加上注解@Transactional

总结

三. 事务失效

有三种事务失效的场景

  • 异常捕获处理
  • 抛出检查异常
  • 非public方法

3.1 异常捕获处理

        事务通知只有捉到了目标抛出的异常,才能进行后续的回滚处理,如果目标自己处理掉异常,事务通知无法知悉

        解决方法是在catch块中添加throw new RuntimeException(e)抛出

3.2 抛出检查异常

原因是Spring默认只会回滚非检查异常

解决方法是配置rollbackFor属性@Transactional(rollbackFor=Exception.class)

3.3 非public方法导致的事务失效

总结

Spring中事务失效的场景有以下几种:

1.异常捕获处理,自己处理了异常,没有抛出,解决方法是手动抛出

2.抛出检查异常,配置rollbackFor属性为Exception

3.非public方法导致的事务失效,改为public

四. Spring的bean的生命周期

4.1 BeanDefinition

        Spring容器在进行实例化时,会将xml配置的<bean>的信息封装成一个BeanDefinition对象,Spring根据BeanDefinition来创建Bean对象,里面有很多的属性用来描述Bean

总结

五. Spring循环引用

循环引用可能出现死循环现象

5.1 三级缓存解决循环依赖

一级缓存作用:限制bean在beanFactory中只存一份,即实现singleton scope,解决不了循环依赖

二级缓存

三级缓存

5.2 构造方法出现了循环依赖怎么解决

总结

六. SpringMvc执行流程

SpringMvc的执行流程是这个框架最核心的内容

  • 视图阶段(老旧JSP等)
  • 前后端分离阶段(接口开发、异步)

6.1 视图阶段(JSP)

 

 6.2 前后端分离阶段(接口开发、异步)

 总结

 

 七. SpringBoot自动配置原理

  • @SpringBootConfiguration:该注解与@Configuration注解作用相同,用来声明当前也是一个配置类
  • @ComponentScan:组件扫描,默认扫描当前引导类所在包及其子包
  • @EnableAutoConfiguration:SpringBoot实现自动化配置的核心注解。

@EnableAutoConfiguration注解分析如下

 总结

 

 八. Spring框架常见注解(Spring、SpringBoot、SpringMvc)

8.1 Spring的常见注解

Spring的常见注解有哪些?

回答参照下表:

8.2 SpringBoot的常见注解

SpringBoot的常见注解有哪些?

回答参照下表:

8.3 SpringMvc的常见注解

SpringMvc的常见注解有哪些?

回答参照下表:

八. Mybatis执行流程

Mybatis执行流程

首先要定义核心配置文件mybatis-config.xml,作用一是加载环境配置,二是加载映射文件

操作数据库

总结

Mybatis执行流程是?

九. Mybatis延迟加载

Mybatis是否支持延迟加载?

9.1 什么是延迟加载

9.1 延迟加载的原理

  1. 使用CGLIB创建目标对象的代理对象
  2. 当调用目标方法user.getOrderList()时,进入拦截器invoke方法,发下user.getOrderList()是null值,执行sql查询order列表
  3. 把order查询上来,然后调用user.setOrderList(List<Order> orderList),接着完成user.getOrderList()方法的调用

总结

十. Mybatis一级二级缓存

Mybatis的一级,二级缓存用过吗?

10.1 一级缓存

        基于PerpetualCache的HashMap本地缓存,其存储作用域为Session,当Session进行flush或close之后,该Session中的所有Cache就将清空,默认打开一级缓存

10.2 二级缓存

        基于namespace和mapper的作用域起作用的,不是依赖于SQL session,默认也是采用PerpetualCache,HashMap存储

二级缓存默认是关闭的

开启方式,两步走:

1. 全局配置文件

2.映射文件

使用<cache/>标签让当前mapper生效二级缓存

 注意事项:

总结


http://www.hkcw.cn/article/lXtqxwwCGS.shtml

相关文章

【Go】2、Go语言实战

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 前置知识 本篇将涉及到一些在命令行的输入输出操作&#xff0c;之前我们已经学习了fmt包用于输出内容&#xff0c;下面将介绍bufio包用于读入数据。 bufio包简介 bufio 是 Go 标准库…

基于Python与本地Ollama的智能语音唤醒助手实现

项目简介 本项目是一个基于 Python 的智能语音助手&#xff0c;集成了语音录制、语音识别、AI对话和语音合成功能。用户可以通过语音与本地部署的 Ollama 大模型进行自然对话。 技术架构 核心功能模块 语音录制 - 使用 sounddevice 录制用户语音语音识别 - 使用 faster-whi…

Vue框架2(vue搭建方式2:利用脚手架,ElementUI)

一.引入vue第二种搭建方式 在以前的前端项目中,一个项目需要多个html文件实现页面之前的切换,如果页面中需要依赖js或者css文件,那么我们就需要在多个html文件中都需要导入vue.js文件,太过繁琐. 现在前端开发都采用单页面结果,一个项目中只有一个html文件 其他不同的内容都写…

维斯塔潘谈和拉塞尔碰撞 意外相撞引发讨论

在F1西班牙大奖赛正赛中,维斯塔潘因与拉塞尔相撞被罚时10秒,最终排名第十。赛后采访中,记者问及那次碰撞。维斯塔潘表示两人开车时确实撞到了一起。当记者指出他本可以避免这种情况时,维斯塔潘承认了这一点。至于为什么会发生这样的情况,他表示自己也不清楚。责任编辑:zx…

乌称摧毁俄大量轰炸机 俄媒称系谣言 谎言蛛网

俄罗斯“与假新闻作战”网站发布文章称,通过分析乌克兰方面发布的视频可以确认,乌总统泽连斯基所谓“已摧毁34%俄罗斯远程机队”的说法并不属实。俄方认为,乌方的行动更像是编织了一张“谎言蛛网”。俄方分析指出,乌克兰实际上可能仅摧毁了两架图-95战略轰炸机及一架安-12运…

IntelliJ IDEA 接入 Ollama 本地模型 Qwen-coder

一&#xff1a;下载ollama 官网下载https://ollama.com/ 二&#xff1a;安装 一键自动安装&#xff0c;且安装的是C盘 如果C盘紧张&#xff0c;想装在其他盘符&#xff0c;在安装包目录下打开cmd命令行&#xff0c; 在你想安装的盘下创建一个文件夹&#xff0c;例如在D盘创建…

C++学习-入门到精通【12】文件处理

C学习-入门到精通【12】文件处理 目录 C学习-入门到精通【12】文件处理一、文件和流二、创建顺序文件三、从顺序文件读取数据文件定位指针对之前的程序进行修改&#xff1a;贷款查询程序 四、更新顺序文件五、随机存取文件1.创建随机存取文件2.修改程序&#xff1a;贷款处理程序…

生成式AI模型的重要评估指标——FID

1、引言 随着深度学习的发展迅速&#xff0c;生成式模型如生成对抗网络&#xff08;GAN&#xff09;、变分自编码器&#xff08;VAE&#xff09;等取得了显著的进展。看似逼真的图像数据&#xff0c;仍旧会有结构缺陷等情况发生&#xff0c;那么如何客观、准确的评估这些生成式…

第十:如何在Pycharm中安装AI插件(Proxy AI)

一.安装插件 1.通过官网安装&#xff1a;https://plugins.jetbrains.com/plugin/21056-proxy-ai2.通过设置安装&#xff1a;设置->插件->搜索&#xff1a;Proxy AI->点击安装3.安装后重启二.配置插件 1.配置路径&#xff1a;设置 -> 工具 -> CodeGPT或者Proxy…

在Visual Studio开发平台使用通义灵码:AI代码助手的深度实践指南

引言&#xff1a;当经典IDE遇见AI代码革命 Visual Studio&#xff08;以下简称VS&#xff09;作为微软推出的旗舰级集成开发环境&#xff0c;长期占据企业级开发工具的核心地位。然而&#xff0c;在智能化浪潮下&#xff0c;传统IDE的代码编写效率瓶颈日益显现。阿里云推出的通…

为什么你必须降AI?——写给每一位学生与科研人

&#x1f4c9; 为什么要降 AI 检测率&#xff1f;一篇文章带你看清真相&#xff01; 随着AI大模型的发展&#xff0c;越来越多的人开始使用人工智能辅助写作&#xff0c;无论是撰写论文、文案&#xff0c;还是职称申请材料&#xff0c;都大大提升了效率。然而&#xff0c;随之…

万字长文带你深度探索 MCP:AI 连接的未来之光​,MCP如何让AI产生“心灵感应“

文章目录 一、引言&#xff1a;开启 MCP 的神秘大门​二、MCP 的基本概念解析​2.1 MCP 的定义与内涵​2.2 与传统协议的区别与优势​ 三、MCP 的技术原理深度剖析​3.1 核心技术架构​3.2 数据格式与通信协议​ 四、MCP 的应用案例全景展示​4.1 WhatsApp MCP&#xff1a;AI 助…

【人工智能】人工智能的10大算法详解(优缺点+实际案例)

人工智能&#xff08;AI&#xff09;是现代科技的重要领域&#xff0c;其中的算法是实现智能的核心。本文将介绍10种常见的人工智能算法&#xff0c;包括它们的原理、训练方法、优缺点及适用场景。 1. 线性回归&#xff08;Linear Regression&#xff09; 模型原理 线性回归…

程序员鱼皮最新项目-----AI超级智能体教程(一)

文章目录 1.前言1.什么是AI大模型2.什么是多模态3.阿里云百炼平台介绍3.1文本调试展示3.2阿里云和dashscope的关系3.3平台智能体应用3.4工作流的创建3.5智能体编排应用 1.前言 最近鱼皮大佬出了一套关于这个AI 的教程&#xff0c;关注鱼皮大佬很久了&#xff0c;鱼皮大佬确实在…

Oracle官方MySQL+APEX+AI限时免费预约流程大全

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…

AI 高手之路 #6:Pandas 数据处理——AI 数据清洗与准备

目录 引言:为什么 Pandas 是 AI 数据处理的瑞士军刀?Pandas 核心数据结构:精巧的矛与盾 2.1 Series:一维数据的精巧之矛 创建 Series:从零开始构建Series 索引和切片:精准定位与范围选取Series 运算:灵活的数据操作2.2 DataFrame:二维数据的坚实之盾 创建 DataFrame:构…

初学者如何微调大模型?从0到1详解

本文将手把手带你从0到1&#xff0c;详细解析初学者如何微调大模型&#xff0c;让你也能驾驭这些强大的AI工具。 1. 什么是大模型微调&#xff1f; 想象一下&#xff0c;预训练大模型就像一位博览群书但缺乏专业知识的通才。它掌握了海量的通用知识&#xff0c;但可能无法完美…

2008-2023年 上市公司-企业研发操纵数据-社科经管实证数据

2008-2023年上市公司-企业研发操纵数据-社科经管https://download.csdn.net/download/paofuluolijiang/90880455 https://download.csdn.net/download/paofuluolijiang/90880455 覆盖2008-2023年A股上市公司的研发操纵行为&#xff0c;累计包含超3.4万条观测值&#xff0c;涉及…

马斯克:不想为美政府所做的一切担责 成裁员替罪羊

当地时间6月1日,美国企业家埃隆马斯克在接受哥伦比亚广播公司采访时表达了他对政府的态度。他表示自己并不想公开反对美国政府,但也不愿意为政府所做的一切承担责任。马斯克提到,他领导的“政府效率部”成了所有问题的替罪羊,无论裁员是否真实发生,责任都被推到了该部门头…

歼-10超低空飞行含金量超高 飞行员技术与胆识的双重考验

歼-10战斗机是中国自主研制的高性能、多用途、全天候的第三代战斗机,能够完成震撼的超低空飞行。其动作流畅自如,如行云流水般展示挂载和低空盘旋等高难度动作。对于飞行员而言,利用山谷地形进行超低空飞行不仅有助于隐蔽行动,还能有效避开敌方雷达探测,实现突然袭击。尽管…