spring事务源码

事务的三大接口
PlateformTransactionManager 平台事务管理器 ----得到事务状态,提交,回滚事务

TransactionDefinition 事务定义(隔离级别,传播行为,超时,只读,回滚规则)—7大传播行为,4大隔离级别

TransactionStatus 事务运行状态 —新的事物,有保存点吗

@Import(TransactionManagementConfigurationSelector.class) 容器中导入组件TransactionManagementConfigurationSelector

ImportSelector 带有这个字眼,都是往容器中导入组件。----public class TransactionManagementConfigurationSelector extends AdviceModeImportSelector {

在这里插入图片描述
BeanFactoryTransactionAttributeSourceAdvisor 增强器的通知。

transactionAttributeSource 事物属性

transactionInterceptor 事务拦截

ImportBeanDefinitionRegistrar注入组件,注入bean

public abstract class AopConfigUtils {}
InfrastructureAdvisorAutoProxyCreator

在这里插入图片描述

createBean—》docreateBean—》createBeanInstance---->resolveBeforeInstantiation

AbstractAutowireCapableBeanFactory
try {
// Give BeanPostProcessors a chance to return a proxy instead of the target bean instance.
//给处理器一个机会,去放回一个代理对象----》aop,代理多不会在这里生成代理对象----》因为这里连对象都没有。-----aop的话回去找通知,进行缓存-----》
//不会生成代理对象
Object bean = resolveBeforeInstantiation(beanName, mbdToUse);//从这里拿到接口进行调用BeanPostProcessors


	@Nullable
	protected Object resolveBeforeInstantiation(String beanName, RootBeanDefinition mbd) {
		Object bean = null;
		if (!Boolean.FALSE.equals(mbd.beforeInstantiationResolved)) {
			// Make sure bean class is actually resolved at this point.
			if (!mbd.isSynthetic() && hasInstantiationAwareBeanPostProcessors()) {
				Class<?> targetType = determineTargetType(beanName, mbd);
				if (targetType != null) {
					bean = applyBeanPostProcessorsBeforeInstantiation(targetType, beanName);
					if (bean != null) {
						bean = applyBeanPostProcessorsAfterInitialization(bean, beanName);
					}
				}
			}
			mbd.beforeInstantiationResolved = (bean != null);
		}
		return bean;
	}

aop进行了缓存,但事物没有缓存。因为不缓存,那么多的切点,第二次去找,就会很消耗性能。
解析切面,循环每个类,判断它有无切点。事物是直接点名道姓去找。不需要遍历

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值