Spring-SpringBoot-SpringMVC-MyBatis常见面试题

news2024/12/28 21:21:36

文章目录

  • Spring篇
    • springbean是安全的的?
    • 什么是AOP
    • 你们工作中有用过AOP吗
    • spring中的事务是如何实现的
    • spring中事务失效场景
    • Spring的生命周期
    • spring中的循坏依赖
    • springMVC的执行流程
    • springboot的启动原理
    • 常用注解
    • MyBatis执行流程
    • Mybatis是否支持延迟加载?
    • Mybatis的一级、二级缓存用过吗?

Spring篇

springbean是安全的的?

不是线程安全的,他默认是单例的,如果有多个线程会并发执行该请求对应的逻辑,在处理过程中如果有对该单例状态修改,则需要考虑线程同步问题,

什么是AOP

他是面向编程的,用于与业务无关,可以抽取为公共模块,降低耦合,一般用于日志,事务

你们工作中有用过AOP吗

  • 主要是使用AOP来记录操作日志,主要思路的使用AOP的环绕通知和切点表达式

spring中的事务是如何实现的

  • 一种是编程式事务,另一只是声明式事务俩种方法
    • 第一种是TransactionTemplate来实现的,对代码有侵入性
    • 第二种是通过AOP在方法前进行拦截,执行完之后是提交还是回滚

spring中事务失效场景

  • 异常的捕获 -在catch块中添加throw new 异常(手动抛出运行时异常)
  • 抛出检查性异常 - 在Transaction属性中添加(Exception.class)
  • 不使用 public 方法

Spring的生命周期

在这里插入图片描述

  1. 通过BeanDefinition获取bean的定义信息
  2. 调用构造函数实例化bean
  3. bean的依赖注入
  4. 处理Aware接口(BeanNameAware、BeanFactoryAware、ApplicationContextAware)
  5. Bean的后置处理器BeanPostProcessor-前置
  6. 初始化方法(InitializingBean、init-method)
  7. Bean的后置处理器BeanPostProcessor-后置
  8. 销毁bean

spring中的循坏依赖

  • 循环依赖其实就是A引用了B,B又引用了A
  • 一级缓存放入的完整的Bean对,二级缓存Bean的生命周期还没有走完,三级缓存:缓存的是ObjectFactory,用来创建某个对象(工厂)
  • 解决方法
    • 先实例化A对象,同时会创建工程放入到三级缓存中,当A需要用到B的时候,B完成实例化完成时,放入到三级缓存中,B需要A的时候,通过三级缓存生产对象放入到二级缓存中,此时B创建成功后放入到一级缓存
    • 如果是构造方法出循环依赖时库使用懒在构造方法上添加@Lazy
      请添加图片描述

springMVC的执行流程

在这里插入图片描述

springboot的启动原理

在这里插入图片描述
在这里插入图片描述
@SpringBootConfiguration:该注解与 @Configuration 注解作用相同,用来声明当前也是一个配置类。
@ComponentScan:组件扫描,默认扫描当前引导类所在包及其子包。
@EnableAutoConfiguration:SpringBoot实现自动化配置的核心注解。
在这里插入图片描述
1, 在Spring Boot项目中的引导类上有一个注解@SpringBootApplication,这个注解是对三个注解进行了封装,分别是:
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
2, 其中@EnableAutoConfiguration是实现自动化配置的核心注解。 该注解通过@Import注解导入对应的配置选择器。
内部就是读取了该项目和该项目引用的Jar包的的classpath路径下META-INF/spring.factories文件中的所配置的类的全类名。 在这些配置类中所定义的Bean会根据条件注解所指定的条件来决定是否需要将其导入到Spring容器中。
3, 条件判断会有像@ConditionalOnClass这样的注解,判断是否有对应的class文件,如果有则加载该类,把这个配置类的所有的Bean放入spring容器中使用。

常用注解

在这里插入图片描述
在这里插入图片描述

MyBatis执行流程

在这里插入图片描述

Mybatis是否支持延迟加载?

  • 支持,默认是关闭状态
  • 原理
    • 使用cglib代理来实现的,他会进来拦截器invoke,如果是null时,执行sql,调用set方法.

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

  • 一级和二级缓存都是保存到本地,本质是一个hashmap,一级缓存的作用域是session级别的,二级缓存是namespace和mapper的作用域,不依赖于session(默认是打开一级缓存)
  • 开启二级缓存
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/949851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android studio实现圆形进度条

参考博客 效果图 MainActivity import androidx.appcompat.app.AppCompatActivity; import android.graphics.Color; import android.os.Bundle; import android.widget.TextView;import java.util.Timer; import java.util.TimerTask;public class MainActivity extends App…

【记录】Truenas scale|NFSv4数据集的子目录或文件的ACL完全访问权限继承老是继承不了怎么回事

我遇到了数据集下新建文件夹或文件,新建的文件夹或文件没有和数据集的ACL设置相符合的情况。其根本原因是NFSv4的完全访问权限要想继承的话,它的访问设置权限要设置“用户”和“组”的,就是,一定要选择中文的那个设置。纯owner和g…

计算机竞赛 基于机器视觉的行人口罩佩戴检测

简介 2020新冠爆发以来,疫情牵动着全国人民的心,一线医护工作者在最前线抗击疫情的同时,我们也可以看到很多科技行业和人工智能领域的从业者,也在贡献着他们的力量。近些天来,旷视、商汤、海康、百度都多家科技公司研…

JavaScript数组简介

JavaScript中的数组是一种强大的数据结构,它可以用来存储和处理各种类型的数据。熟练掌握数组的使用可以让编写JavaScript代码更加高效和优雅; ● 例如,现在我十个朋友要存到变量中,传统的话 const friend1 "张三"; c…

mysql 间隙锁原理深度详解

目录 一、前言 二、mysql之mvcc 2.1 什么是mvcc 2.2 mvcc组成 2.2.1 Undo log 多版本链 2.2.2 ReadView 2.2.3 快照读与当前读 三、RR级别下的事务问题 3.1 RR隔离级别解决的问题 3.1.1 幻读问题 3.2 幻读效果演示 3.2.1 准备测试表和数据 3.2.2 修改事务级别 3.…

2017. 网格游戏;2397. 被列覆盖的最多行数;2202. K 次操作后最大化顶端元素

2017. 网格游戏 核心思想:前缀和枚举。读完题后可以发现,第一个机器人走的路线就像一条分割线,第二个机器人只能获得上面白色部分或者下面白色部分的最大值。这个最大值怎么求,我们可以通过前缀和来求,然后通过枚举转…

【探索C++】输入输出

(꒪ꇴ꒪ ),Hello我是祐言QAQ我的博客主页:C/C语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍快上🚘,一起学习,让我们成为一个强大的攻城狮&#xff0…

【模拟】算法实战

文章目录 一、算法原理二、算法实战1. leetcode1576 替换所有的问号2. leetcode495 提莫攻击3. leetcode6 N字形变换4. leetcode38 外观数列5. leetcode1419 数青蛙 三、总结 一、算法原理 模拟就是用计算机来模拟题目中要求的操作,模拟题目通常具有代码量大、操作…

网络编程套接字(4):日志和守护进程

文章目录 网络编程套接字(4): 日志和守护进程5. 增加日志功能6. 守护进程6.1 进程知识补充(1) 进程组(2) 任务(3) 会话 6.2 守护进程(1) 概念(2) 创建守护进程 网络编程套接字(4): 日志和守护进程 5. 增加日志功能 接着上篇的内容,增加日志功能可以更好地&#xf…

16.WebSocket聊天室

基于SpringBoot 2.6.11 1.WebSocket WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议,可以在html页面直接使用。 WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket A…

2021年12月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:书架 John最近买了一个书架用来存放奶牛养殖书籍,但书架很快被存满了,只剩最顶层有空余。 John共有N头奶牛(1 ≤ N ≤ 20,000),每头奶牛有自己的高度Hi(1 ≤ Hi ≤ 10,000),N头奶牛的总高度为S。书架高度为B(1 ≤…

亚马逊云科技 云技能孵化营——我的云技能之旅

文章目录 每日一句正能量前言活动流程后记 每日一句正能量 不能在已经获得足够多的成功时,还对自己的能力保持怀疑,露出自信的微笑,走出自信的步伐,做一个自信的人! 前言 亚马逊云科技 (Amazon Web Services) 是全球云…

Kao框架学习

中间件:洋葱模型 这是官网上给出的示例,从logger依次往下执行,执行到最底层的response往回退,结构很像同心圆的洋葱从外层向内层再由内层向外层。 next表示暂停当前层的代码进入下一层, 当最后一层执行完毕开始回溯&a…

学习完毕JavaSE的感想

今天,把Java复习完毕了,之前学习的时候,学校里学的总是有限的 ,自己上手操作之后才发觉差的很多,部署服务器发现要学操作系统,学完了web基础 ,又发现还得学前后端分离vue react这些,…

基于ensp的中大型企业网络安全解决方案的设计与实施

一、需求背景 公司部门具体背景:公司共设有人事部、财务部、销售部、市场部四个部门以及一个员工宿舍楼,公司有对外互联网业务需要提供。公司内存在重要部门需要保护数据安全以及访问控制。 (1)根据客户需求、部门、拓扑&#xf…

代码搜索技巧

在IDE中搜索代码时,经常会被相近的无关代码干扰,如筛选所有使用协程的代码段, 可见有大量“噪音”。 可使用IDE提供的正则表达式功能 如 使用 \bgo ,即匹配go开头的,且之后为空格的所有选项 使用 \bgo func,即匹配到了所有使用协程…

C++学习vector

1,把list的相关函数都实现出来(未完) 2, 运行结果:

等保测评各个级别的详细内容

等保测评是指信息系统安全等级保护测评,是我国信息安全领域中的一项重要工作。根据国家标准《信息系统安全等级保护基本要求》(GB/T 22239-2008)和《信息系统安全等级保护测评技术要求》(GB/T 25070-2010)。 等保测评分为五个级别,分别是:一级…

达梦数据库管理用户和创建用户介绍

概述 本文主要对达梦数据库管理用户和创建用户进行介绍和总结。 1.管理用户介绍 1.1 达梦安全机制 任何数据库设计和使用都需要考虑安全机制,达梦数据库采用“三权分立”或“四权分立”的安全机制,将系统中所有的权限按照类型进行划分,为每…