入口分析:
1、对于spring源码有一定了解的话,一定知道,对每个插件想要被spring管理,则会实现其对应的接口,并以*Handler结尾,所以找到了 TxNamespaceHandler
2、TxNamespaceHandler extends NamespaceHandlerSupport
2.1 init()
new TxAdviceBeanDefinitionParser();
根据类继承体系,找到关键的bean实例化代码
2.2 TxAdviceBeanDefinitionParser extends AbstractSingleBeanDefinitionParser extends AbstractBeanDefinitionParser implements BeanDefinitionParser
2.2.1 AbstractBeanDefinitionParser.parse
2.2.1.1 AbstractSingleBeanDefinitionParser.parseInternal
2.2.1.1.1 TxAdviceBeanDefinitionParser.getBeanClass
return TransactionInterceptor.class; -> 最重要类
2.2.1.1.2 TxAdviceBeanDefinitionParser.doParse
2.2.1.2 AbstractBeanDefinitionParser.parse#new BeanDefinitionHolder()
2.2.1.3 AbstractBeanDefinitionParser.parse#registerBeanDefinition
当前两边完成 bean对象注册
3、 TransactionInterceptor.invoke