spring视频笔记

1、spring的事务传播机制是什么

多个事务方法相互调用时,spring提供了7种不同的传播特性

REQUIRED:默认的传播特性,如果当前没有事务,则新建一个事务,如果当前存在事务,则加入这个事务,一般情况下不做特殊设置的时候,用的就是该事务

SUPPORTS:当前存在事务,则加入当前事务,当前没有事务,则以非事务的方式运行

MANDATORY:当前存在事务,则加入当前事务,如果当前事务不存在,则抛异常

REQUIRED_NEW:创建一个新事务,如果存在当前事务,则挂机该事务

NOT_SUPPORTED:以非事务方式执行,如果存在当前事务,则挂起当前事务

NEVER:不使用事务,如果当前事务存在,则抛出异常

NESTED:如果当前事务存在,则在嵌套事务中执行,否则和REQUIRED的操作一样

2、spring事务的隔离级别有哪些

read uncommitted:读未提交

red committed:读已提交

repeatable read:可重复读

serializable:串行化

在进行配置的时候,如果数据库和spring代码中的隔离级别不同,那么以spring的配置为主

3、spring事务的实现原理

两种事务的实现方式,一种是编程式事务,一种是声明式事务,通过@Transactional注解来实现

事务操作是AOP的一个核心提现,当一个方法添加@Transactional注解之后,spring会基于这个类生成一个代理对象,会将这个代理对象作为bean,当使用这个代理对象的方法的时候,如果有事务处理,那么会先把事务的自动提交给关闭掉,然后去执行具体的业务逻辑,如果执行逻辑没有出现异常,那么代理逻辑就会直接提交,如果出现任何异常情况,那么直接进行回滚操作,当然用户可以控制对哪些异常进行回滚操作

4、spring事务什么时候会失效

bean对象没有被spring容器管理

方法的访问修饰符不是public

自身调用问题

数据源没有配置事务管理器

异常被捕获

异常类型错误或者配置错误

5、spring支持的bean作用域有哪些

singleton-单例模式

prototype-原型模式

request-适用于WebApplicationContext,该属性仅对HTTP请求产生作用,使用该属性定义bean时,每次HTTP请求都会创建一个新的Bean

session-仅用于HTTP Session,同一个Session共享一个Bean实例,不同的Session使用不同的实例

global-session-仅用于HTTP Session,同session作用域不同的是,所有的Session共享一个Bean实例

6、spring的AOP底层实现原理

底层原理是动态代理,通过jdk原生或者cglib实现

aop是ioc的一个扩展功能,是在ioc的整个流程中的一个扩展点:BeanPostProcessor

总:aop是面向切面变成,应用场景是日志,事务等,通过动态代理(jdk,cglib)实现

分:bean的创建过程中有一个步骤可以对bean进行扩展实现,aop本身就是一个扩展功能,所以在BeanPostProcessor的后置处理方法中来进行实现

        1.代理对象的创建过程(advice-通知,切面,切点)

        2.通过jdk或者cglib生成代理对象

        3.在执行方法调用的时候,会调用到生成的代理对象中,直接找到DynamicAdvisoredInterceptor类中的intercept方法,从此方法开始执行

        4.根据之前定义好的通知来生成拦截器链

        5.从拦截器链中依次获取每一个通知开始进行执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值