Spring面试题

目录

Spring事务

Spring的事务传播行为(级别)

Spring的事务隔离

Spring中的BeanFactory和ApplicationContext的区别


Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。真正的数据库层的事务提交和回滚是通过binlog或者redo log实现的。

Spring事务

简单点来说,就是对数据的操作要么完全执行完成,要么不执行,不存在执行部分完成。

其次,事务的ACID四大特性

  1. 持久性:一个事务被提交后,它对数据库中数据的改变是持久的即使数据库发生故障也不应该对其有任何影响。(利用redo log日志)
  2. 原子性:事务的原子性确保动作要么全部完成,要么完全不起作用。(利用 undo log日志)
  3. 隔离性:并发访问数据库时,一个用户的事务不被其他事务干扰,各并发事务之间是独立的
  4. 一致性:执行事务前后,数据保持一致,如:转账业务中,无论事务是否成功,转账者和收款人的总额应该是不变的。

Spring的事务传播行为(级别)

  1. PROPAGATION_REQUIRED:如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。
  2. PROPAGATION_RQUIRES_NEW:创建新事务,无论当前存不存在事务,都创建新事务。
  3. PROPAGATION_SUPPORTS:支持当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就以非事务执行。
  4. PROPAGATION_NOT_SUPPORTED:以非事务的方式执行操作,如果当前存在事务,就把当前事务挂起。
  5. PROPAGATION_NESTED:如果当前存在事务,则嵌套事务内执行,如果当前没有事务,则按REQUIRED属性执行。
  6. PROPAGATION_MANDAYTORY:执行当前事务,如果当前存在事务,就加入该事务,如果当前不存在事务,就抛出异常。
  7. PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常

Spring的事务隔离

spring有五大隔离级别,默认值为ISOLATION_DEFAULT(使用数据库的设置),其他四个隔离级别和数据库的隔离级别一致:

  • 读未提及:最低隔离级别、事务未提交前,就可被其他事务读取(会出现脏读,不可重复读、幻读);
  • 读已提交:提交读,一个事务提交后才能被其他事务读取到(不可重复读,幻读);
  • 可重复读:保证多次读取同一个数据时,其值和事务开始时候的内容是一致,禁止读取到别的事务未提交的数据(幻读)MySQL的默认级别
  • 顺序读:序列化,代价最高最可靠的隔离级别,该隔离级别能防脏读、不可重复读、幻读

脏读:A事务读取B事务中还未提交的数据。比如,A事务尝试插入记录,此时该事务还未提交,然后B事务读取到了该记录,然后A事务回滚,导致B事务读取的数据

不可重复读:一个事务两次执行相同的sql,获取的相同的数据不一致,A事务第一次读取后,B事务修改了数据,导致A事务第二次获取的数据不一样

幻读:指同一个事务内多次查询返回的结果集不一样。比如同一个事务A第一次查询的时候有n条记录,但是第二次同等条件下查询却有n+1条记录。幻读的原因是另外一个事务新增或者删除了第一个事务结果集里面的数据。

Spring中的BeanFactory和ApplicationContext的区别

BeanFactory是Spring IOC容器的最基本形式,提供了基本的IOC功能。它是延迟初始化的,即当一个Bean被实际使用时才被创建。ApplicationContext是BeanFactory的子接口,提供了更多的企业级功能,如AOP,事件驱动,国际化等。ApplicationContext是预初始化的,即在容器启动时就已经创建了所有的Bean。

相关推荐
浩浩测试一下7 小时前
内网---> ForceChangePassword 权限滥用
java·服务器·网络·安全·web安全·网络安全·系统安全
独自破碎E7 小时前
【BISHI11】变幻莫测
android·java·开发语言
qq_12498707537 小时前
基于Javaweb的《战舰世界》游戏百科信息系统(源码+论文+部署+安装)
java·vue.js·人工智能·spring boot·游戏·毕业设计·计算机毕业设计
梦想的旅途27 小时前
如何优雅地实现企微外部群消息自动化(Java/Python/Go 多语言版)
java·自动化·企业微信
短剑重铸之日7 小时前
《设计模式》第十篇:三大类型之行为型模式
java·后端·设计模式·责任链模式·访问者模式·行为型模式
应用市场7 小时前
踩坑记录:有符号整数位运算的那些隐蔽Bug——符号扩展、算术右移与补码
java·开发语言·bug
HWL56797 小时前
控制浏览器如何预先加载视频资源
java·服务器·前端
独断万古他化7 小时前
【SSM开发实战:博客系统】(一)项目初始化与基础功能实现
spring boot·spring·mybatis·博客系统·项目
工具罗某人7 小时前
IDEA JRebel插件实现热部署
java·ide·intellij-idea
计算机毕设指导68 小时前
基于微信小程序的校园二手交易系统【源码文末联系】
java·spring boot·spring·微信小程序·小程序·tomcat·maven