在Spring 2.0 中要设置声明式事务管理,可以依赖Spring 2.0 的<aop>与<tx>标签
首先需要设置声明
<
beans
xmlns
="http://www.springframework.org/schema/beans"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop
="http://www.springframework/org/schema/aop"
xmlns:tx
="http://www.springframework.org/schema/tx"
xsi:schemaLocation
="http://www.springframework.org/schema/beans
http://www.springframework.org/shcema/beans/spring-beans-2.0./xsd
http://www.springframework.org/scheam/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"
>
</
beans
>
事务是系统层面的服务,也就是一个Aspect,其实具体来说是一个advice,您可以使用<tx:advice>标签来提供这个 advice它需要设置一个TransactionManager,并在当中使用<tx:attributes>来设置事务相关属性
具体应用:
<
bean
id
="dataSource"
......
></
bean
>
<
bean
id
="transactionManager"
.....
></
bean
>
<
bean
id
="userDAO"
....
></
bean
>

<!--
注意到<tx:method>中的属性设置,对于传播行为,隔离层级,只读,超时,异常时撤销或提交,都对应的propagation,
isolation,timeout,read-only,rollback-for,no-rollback-for属性可以设置,若不设置,默认值是REQUIRED,DEFAULT,-1,false
-->
<
tx:advice
id
="txtAdvice"
transaction-manager
="transactionManager"
>
<
tx:attributes
>
<
tx:method
name
="insert*"
propagation
="REQUIRED"
/>
<
tx:methpd
name
="find*"
read-only
="true"
/>
</
tx:attributes
>
</
tx:advice
>

<
aop:config
>
<
aop:pointcut
id
="userDAOPointCut"
expression
="execution(* onlyfun.service.IUserDAO.* (..))"
/>
<
aop:advisor
advice-ref
="txAdvice"
pointcut-ref
="userDAOPointCut"
/>
</
aop:config
>

