JAVA面试-框架篇

1、Spring中事务失效的场景

在项目中,我遇到过几种导致事务失效的场景:

  1. 如果方法内部捕获并处理了异常,没有将异常抛出,会导致事务失效。因此,处理异常后应该确保异常能够被抛出。

  2. 如果方法抛出检查型异常(checked exception),并且没有在@Transactional注解上配置rollbackFor属性为Exception,那么异常发生时事务可能不会回滚。

  3. 如果事务注解的方法不是公开(public)修饰的,也可能导致事务失效。

详解: https://www.bilibili.com/video/BV1yT411H7YK?spm_id_from=333.788.videopod.episodes&vd_source=5cdd04cd106e2c17afbf3ebd1143d654&p=38

2、 SpringMVC的执行流程

老旧的视图阶段(JSP)

前后端分离

3、SpringBoot自动装配原理

Spring Boot的自动配置原理基于@SpringBootApplication注解,它封装了@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan@EnableAutoConfiguration是核心,它通过@Import导入配置选择器,读取META-INF/spring.factories文件中的类名,根据条件注解决定是否将配置类中的Bean导入到Spring容器中。

4、Spring循环依赖怎么解决

循环依赖发生在两个或两个以上的bean互相持有对方,形成闭环。Spring框架允许循环依赖存在,并通过三级缓存解决大部分循环依赖问题:

  1. 一级缓存:单例池,缓存已完成初始化的bean对象。

  2. 二级缓存:缓存尚未完成生命周期的早期bean对象。

  3. 三级缓存:缓存ObjectFactory,用于创建bean对象。

解决循环依赖的流程如下:

  1. 实例化A对象,并创建ObjectFactory存入三级缓存。

  2. A在初始化时需要B对象,开始B的创建逻辑。

  3. B实例化完成,也创建ObjectFactory存入三级缓存。

  4. B需要注入A,通过三级缓存获取ObjectFactory生成A对象,存入二级缓存。

  5. B通过二级缓存获得A对象后,B创建成功,存入一级缓存。

  6. A对象初始化时,由于B已创建完成,可以直接注入B,A创建成功存入一级缓存。

  7. 清除二级缓存中的临时对象A。

5、MyBatis执行流程

MyBatis的执行流程如下:

  1. 读取MyBatis配置文件mybatis-config.xml

  2. 构造会话工厂SqlSessionFactory

  3. 会话工厂创建SqlSession对象。

  4. 操作数据库的接口,Executor执行器。

  5. Executor执行方法中的MappedStatement参数。

  6. 输入参数映射。

  7. 输出结果映射。

6、 MyBatis是否支持延迟加载

7、用过MyBatis的一级缓存和二级缓存吗?

一级缓存

一级缓存的作用域是sqlSession级别的,也就是说一个sqlSession下,同样的查询不会执行第二次,用第一次的结果,但是如过执行了更新,删除,插入的操作,会删除所有的一级缓存.一级缓存默认开启

拓展:同一个事务中默认是使用一个sqlSession的,如一个service的方法中加了 @Transactional那么这个方法里都用都一个sqlsesiion,如果没用加 @Transactional也就没开启事务,则这个方法每次执行mapper里的方法都会开启一个新的sqlsession.即使你连续查了同一条sql,这样是不是可以帮助理解一级缓存的作用域是sqlsession级别的.

二级缓存

二级缓存默认是不开启的,要打开配置,mapper的xml中也要开启,二级缓存的作用域是Namespaces级别的,

相关推荐
lee_curry2 小时前
第四章 jvm中的垃圾回收器
java·jvm·垃圾收集器
九转成圣3 小时前
Java 性能优化实战:如何将海量扁平数据高效转化为类目字典树?
java·开发语言·json
wxy不爱写代码3 小时前
C++多线程
面试·职场和发展
直奔標竿4 小时前
Java开发者AI转型第二十七课!Spring AI 个人知识库实战(六)——全栈闭环收官,解锁前端流式渲染终极技巧
java·开发语言·前端·人工智能·后端·spring
金銀銅鐵4 小时前
[java] 编译之后的记录类(Record Classes)长什么样子(上)
java·jvm·后端
野生技术架构师6 小时前
金三银四面试总结篇,汇总 Java 面试突击班后的面试小册
java·面试·职场和发展
小袁拒绝摆烂6 小时前
多表关联大平层转JSON树形结构
java·json
ja哇7 小时前
大厂面试高频八股
java·面试·职场和发展
yoyo_zzm8 小时前
Laravel6.x新特性全解析
java·spring boot·后端