2024年5月31日发(作者:)
Spring事务配置的五种方法
2009-04-24 10:20
总结如下:
Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、
TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机
制这部分。
DataSource、TransactionManager这两部分只是会根据数据访问方式有所变化,比如使
用Hibernate进行数据访问时,DataSource实际为SessionFactory,TransactionManager的
实现为HibernateTransactionManager。
具体如下图:
根据代理机制的不同,总结了五种Spring事务的配置方式,配置文件如下:
第一种方式:每个Bean都有一个代理
xmlns:xsi="/2001/XMLSchema-instance" xmlns:context="/schema/context" xmlns:aop="/schema/aop" xsi:schemaLocation="/schema/beans /schema/beans/ /schema/context /schema/context/ /schema/aop /schema/aop/"> class="essionFactoryBean"> 抽象类实现这个接口------>具体的业务类 那么这个抽象类就是框架类了,封装了一些具体业务类通用的框架了 例子: AbstractPlatformTransactionManager->HibernateTransactionManager->PlatformTransactionManager --> class="ateTransactionManager"> class="ctionProxyFactoryBean"> TransactionAttributeSource 主要是处理 哪个方法需要事务,以及事务是什么级别的, transactionAttributeSource 是类的实例 transactionAttributes是 transactionAttributeSource需要处理的属性 transactionAttributeSource 会根据 TransactionAttribute 属性类 和 对应的 class method生成 TransactionAttribute类 这两个属性说明在 TransactionProxyFactoryBean 上有 setTransactionAttributeSource()与 setTransactionAttributes()方法, 它们是用来设定交易属性的策略实例。 ctionAttributeSource上有一 个 getTransactionAttribute() 方法, 您可以根据传递给它的Method实例与Class实例,决定该返回一个什么内容的 ction .ctionAttribute 实例 如何你只设置了 transactionAttributes,TransactionProxyFactoryBean会把transactionAttributes的值传入 内部的事务拦截器中TransactionInterceptor中 TransactionInterceptor通过调用父类 TransactionAspectSupport的 public void setTransactionAttributes(Properties transactionAttributes) { NameMatchTransactionAttributeSource tas = new NameMatchTransactionAttributeSource();


发布评论