本事例定义了一个spring的事务自动代理机制,
代理类com.tax.tm.model.dao.rp.jdbc.TcttCorpoDaoJdbcImpl中
继承了接口com.tax.tm.model.service.TcttService中以find,do,update,insert,save,add,
deleter开头的方法的事务处理,如果在执行这些方法的过程中抛出TmException异常,则spring
会自动执行事务的回滚操作,如果无TmException异常抛出,则自动提交。
<!-- tcttService dao Definition: JDBC implementation -->
<bean id="tcttCorpoDao"
class="com.tax.tm.model.dao.rp.jdbc.TcttCorpoDaoJdbcImpl">
<property name="jdbcTemplate">
<ref bean="jdbcTemplate" />
</property>
</bean>
<!-- ============ transaction definition ===================== -->
<!-- Definition transaction via AOP -->
<bean id="tcttService" parent="abstractTxDefinition">
<property name="proxyInterfaces">
<list>
<value>com.tax.tm.model.service.TcttService</value>
</list>
</property>
<property name="target">
<ref bean="tcttServiceTarget" />
</property>
</bean>
<!-- ========== transaction properties definition =============== -->
<!-- Definition transactionManager -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<!-- Definition transactionAttributeSource -->
<bean id="transactionAttributeSource"
class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">
<property name="properties">
<props>
<prop key="find*">
PROPAGATION_REQUIRES_NEW,ISOLATION_READ_COMMITTED,readOnly
</prop>
<prop key="do*">
PROPAGATION_REQUIRES_NEW,ISOLATION_READ_COMMITTED,-TmException
</prop>
<prop key="update*">
PROPAGATION_REQUIRES_NEW,ISOLATION_READ_COMMITTED,-TmException
</prop>
<prop key="insert*">
PROPAGATION_REQUIRES_NEW,ISOLATION_READ_COMMITTED,-TmException
</prop>
<prop key="save*">
PROPAGATION_REQUIRES_NEW,ISOLATION_READ_COMMITTED,-TmException
</prop>
<prop key="add*">
PROPAGATION_REQUIRES_NEW,ISOLATION_READ_COMMITTED,-TmException
</prop>
<prop key="delete*">
PROPAGATION_REQUIRES_NEW,ISOLATION_READ_COMMITTED,-TmException
</prop>
</props>
</property>
</bean>
<!-- Definition transaction via TransanctionProxyFactoryBean -->
<bean id="abstractTxDefinition"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
lazy-init="true">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributeSource">
<ref bean="transactionAttributeSource" />
</property>
</bean>