Spring面试题--(隔离、事务、Aop/oop)

Spring 的事务隔离级别?

事务隔离的概念:多个事务可以同时访问数据库中的数据,当多个事务在数据库中同时访问(并发)时,数据库的一致性可能会受到破坏,从而导致数据出现问题

为了解决数据库的访问并发问题,Spring有四种事务隔离级别

  • 未授权读取、读未提交

    一个事务已经开始写数据,另一个事务不允许同时写操作,但允许其他事务读此行数据

  • 授权读取、读提交(spring默认的事务隔离级别)

    读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行

  • 可重复读取

    读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务

  • 序列化

    严格的事务隔离级别,要求事务序列化执行,事务只能一个个执行(可以理解为串行执行),不能并发执行

Spring 的事务传播行为?

1>概念

系统中的一些方法交由spring来管理事务,当这些方法出现嵌套调用的时候,事务的表现行为就由事务的传播来决定

2>事务传播的配置

通过@Transactional注解中的propagation属性来指定事务的传播行为

事务传播行为类型 说明
REQUIRED 如果当前事务管理器中没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择,是默认的传播行为
SUPPORTS 支持当前事务,如果当前事务管理器中没有事务,就以非事务方式执行。
MANDATORY 使用当前的事务,如果当前事务管理器中没有事务,就抛出异常。
REQUIRES_NEW 新建事务,如果当前事务管理器中存在事务,把当前事务挂起,然后会新建一个事务。
NOT_SUPPORTED 以非事务方式执行操作,如果当前事务管理器中存在事务,就把当前事务挂起。
NEVER 以非事务方式执行,如果当前事务管理器中存在事务,则抛出异常。
NESTED 如果当前事务管理器中存在事务,则在嵌套事务内执行;如果当前事务管理器中没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

注意:这 7 种传播行为有个前提,他们的事务管理器是同一个的时候,才会有上面描述中的表现行为。Spring 事务传播默认使用 REQUIRED 类型

什么是AoP?AoP与ooP有何区别?

1>Aop的概念

面向切面编程,通过预编译方式和运行期动态代理实现程序功能统一维护的一种技术

  • 在Spring中Aop是oop的延续和有益补充,函数式编程的一种泛型
  • 在Spring中提供了AOP的丰富支持,允许通过分离应用的业务逻辑与系统级服务和事务管理进行内聚性的并发

2>Aop和OOp的区别

OOP是面向对象编程(两种编程思想,在目标上有本质的差异)

  • OOP(面向对象编程):针对业务处理过程的实体及其属性和行为进行抽象封装为对象,以对象作为最基本的逻辑处理单元,并关注对象与对象之间的关系
  • AOP(面向切面编程):针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以切面作为最基本的逻辑处理单元,以获得逻辑过程中各部分之间低耦合性的隔离效果

什么是连接点、切点和增强(或通知)?

连接点

往程序中插入代码的点(比如类初始化前后,某个方法调用前后)

切点

定位到特定的连接点,切点相当于查询条件,一个切点可以匹配多个连接点(插入代码位置的查询条件)

增强

织入到目标类连接点上的一段程序代码,在SpringAop中,增强除了用于描述一段程序代码外,还拥有另一个和连接点相关的信息

posted @   curry库-04049  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示