首页 > 其他分享 >Spring面试题--(隔离、事务、Aop/oop)

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

时间:2024-11-23 16:24:05浏览次数:4  
标签:面试题 管理器 连接点 -- Spring 事务 切点 Aop

目录

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中,增强除了用于描述一段程序代码外,还拥有另一个和连接点相关的信息

标签:面试题,管理器,连接点,--,Spring,事务,切点,Aop
From: https://www.cnblogs.com/yangcurry/p/18564695

相关文章

  • OOPTA4-6习题集总结
    (1)前言这三次作业算是一个渐进和转折的过程,题目渐渐减少,主要还是要写迭代题,对我来说5-6难度还是蛮大的。4是让我学会了不少更新功能的思路和调试的方法。5-6则让我明白了代码结构的重要性。题目内容主要涉及类的设计等等,以及主要的答题判题程序还有电路系统的编写与迭代。在这三次......
  • 8.9
    loan_amount=600000-200000月利率monthly_interest_rate=0.0036贷款期限(月)loan_term_months=30*12每月还款额=贷款本金×月利率×(1+月利率)^n÷((1+月利率)^n-1),其中n为贷款总月数monthly_payment=loan_amount*monthly_interest_rate*(1+month......
  • pg_file_settings和pg_settings系统视图的区别
    PostgreSQL的系统视图pg_file_settings和pg_settings的区别pg_file_settings和pg_settings是PostgreSQL中两个相关的系统视图,它们用于查看和管理数据库的配置设置。这两个视图提供了不同层次的配置信息,适用于不同的管理和调试需求。以下是它们的区别和特点:pg_file_sett......
  • java-BLOG-2
    1.前言:第四次题目集:这次题目集的第一和第二个题目比较简单,很容易可以做出来,只是用到了一个新的知识点——继承,继承(Inheritance)是面向对象编程的核心特性之一。它允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码复用和功能扩展。继承是通过extends关键字来实现的,子类可......
  • 用Java实现AI人脸比对
    AI人脸比对技术百度智能云注册https://login.bce.baidu.com/?account=&redirect=https%3A%2F%2Fconsole.bce.baidu.com%2Fiam%2F#/iam/baseinfo选择人工智能-->人脸识别认证选择-->立即使用选择免费尝鲜(领取之后五分钟就可以在我的应用里查看了,里面勾选所有的选项)在我......
  • NR中各种ID
    NCGI(NRCELLGlobalIdentifier):全球标识一个NR小区的号码    PLMN(PublicLandMobileNetwork):国家码MCC(MobileCountryCode)+网络码MNC(MobileNetWorkCode),此号码唯一标识了某一个国家的某一个运营商  NCI(NRCELLID):标识NR中的一个CELL   ......
  • 安装部署系统是指将操作系统(OS)和相关应用程序配置并安装到计算机或虚拟机中,通常在大规
    安装部署系统是指将操作系统(OS)和相关应用程序配置并安装到计算机或虚拟机中,通常在大规模计算机系统、数据中心或云环境中进行。一个有效的系统部署方案不仅需要考虑操作系统的安装,还要涉及硬件配置、网络设置、软件应用、自动化和安全等多个方面。下面将详细介绍安装部署的技术细......
  • 第53篇 调用第三方接口时需要注意的点
    前言在我们的业务开发中,调用第三方接口已经成为常态,比如对接一些ERP系统、WMS系统、一些数据服务系统等,它极大地扩展了我们应用的功能和服务范围。然而,实际对接过程中,我们往往会在这一环节遇到各种意想不到的问题,本文将深入探讨几种常见的第三方接口调用难题及其应对策略。1.接......
  • 拿到checkbox的值
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></head><body><formname="form1"><div><labelfor="......
  • 8.8
    importnumpyasnpimportmatplotlib.pyplotasplta=1-0.2*(1/12)m=1.109*10**5w3=17.86w4=22.99X=[]Z=[]forkinnp.arange(0,0.875,0.001):x1=1.221011*(1-1/(m*(1-a-0.42*k)8*(1-a)24*(0.5+(1-a-k)8*(1-a)4))......