【Spring-tx-1】事务。

之前分析了Aop的逻辑,主要还是我们自己编写的切面类的运行逻辑。一想到aop,应该会想到事务,那么事务是怎么实现的呢?本篇分析下事务的逻辑。


使用
使用这里就不做例子了,直接找例子就可以了,就是@EnableTransactionManagement,@Transactional 两个注解,之前咱们已经看过解析配置类的逻辑了,@EnableTransactionManagement一定有@import注解,看看逻辑。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(TransactionManagementConfigurationSelector.class)
public @interface EnableTransactionManagement {

进入到TransactionManagementConfigurationSelector类,实现了ImportSelector接口,那么selectImport方法返回的类一定要重新走一遍解析import类的逻辑,找到真正要导入的类。

TransactionManagementConfigurationSelector#selectImports
默认是AdviceMode 是PROXY,所以将AutoProxyRegistrar,ProxyTransactionManagementConfiguration这两个类作为配置类进行解析,之后注册进工厂中。

	protected String[] selectImports(AdviceMode adviceMode) {
		switch (adviceMode) {
			case PROXY:
				return new String[] {AutoProxyRegistrar.class.getName(),
						ProxyTransactionManagementConfiguration.class.getName()};
			case ASPECTJ:
				return new String[] {determineTransactionAspectClass()};
			default:
				return null;
		}
	}

单独分析这两个类的逻辑,还是拆出来作为新的一篇文章吧,要不篇幅又多了。

spring事务-AutoProxyRegistrar类
spring事务-ProxyTransactionManagementConfiguration类
AutoProxyRegistrar类是找适合对象的切面。
ProxyTransactionManagementConfiguration类是创切面类。
如果把上面两篇文件看懂,基本上事务的切面逻辑就很清楚了,但是有一点,是怎么创建事务,回滚事务,提交事务的呢?看这篇吧。。

spring-事务逻辑

spring-spring事务和mybatis的联系

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值