spring的事务切面(下)

事务处理拦截器的配置和创建过程
spring的事务切面(下)
建立事务处理对象的时序图
Spring为声明式事务处理的实现所作的一些准备工作:包括为AOP配置基础设施,这些基础设施包括设置拦截器TransactionInterceptor、通知器DefaultPointcutAdvisor或TransactionAttributeSourceAdvisor。同时,在TransactionProxyFactoryBean的实现中,还可以看到注入进来的PlatformTransactionManager和事务处理属性TransactionAttribute等。
spring的事务切面(下)
这个拦截器TransactionInterceptor通过AOP发挥作用,通过这个拦截器的实现,Spring封装了事务处理实现。
依赖注入的PlatformTransactionManager。
通过依赖注入的事务属性以Properties的形式出现,把从BeanDefinition中读到的事务管理的属性信息注入到TransactionInteceptor中。
spring的事务切面(下)
这里创建Spring Aop对事务的Advisor,如果pointcut不为null,则使用默认的通知器,并为通知器配置事务处理拦截器。如果没有配置pointcut,使用TransactionAttributeSourceAdvisor作为通知器,并为通知器设置TransactionInterceptor作为拦截器。
spring的事务切面(下)
TransactionProxyFactoryBean的继承关系
从对createMainInterceptor方法的调用分析中可以看到,这个createMainInterceptor方法在IOC容器完成Bean的依赖注入时,通过initializeBean方法被调用。具体调用过程如下图.
spring的事务切面(下)
createMainInterceptor方法的调用关系
TransactionProxyFactoryBean通过继承AbstractSingletonProxyFactoryBean,使用afterPropertiesSet()方法,在方法中使用ProxyFactory完成AOP的基本功能.
spring的事务切面(下)