您的位置:首页 > 编程语言 > ASP

学习记录 - 声明式事务管理方式:基于AspectJ的XML方式和基于注解的方式

2017-03-28 20:19 573 查看
基于AspectJ的XML方式

<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>

<!-- 配置事务的通知:(事务的增强) -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="transfer" propagation="REQUIRED" isolation="DEFAULT" />
<!--
<tx:method>标签中的属性:
propagation	:事务的传播行为
isolation	:隔离级别
read-only	:只读
rollback-for:发生哪些异常回滚
no-rollback-for:发生哪些异常不要回滚
timeout		:过期信息
-->
</tx:attributes>
</tx:advice>

<!-- 配置aop的切面 -->
<aop:config>
<!-- 切入点	前面*代表返任意回值 ,其中AccountService+.*(..)的  +代表子类 / .*任意方法  /  (..)任意参数-->
<aop:pointcut expression="execution(* demo3.AccountService+.*(..))" id="pointcut1"/>
<!-- 切面
<aop:advisor> :一个切入点,一个通知
<aop:aspect>  :多个切入点,多个通知	-->
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut1"/>
</aop:config>
主要是aop方式的事务管理

基于注解的方式 

<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>

<!-- 开启注解事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
业务层实现类添加注解

/**
* 转账案例的业务层实现类
* @author kyulin
*
* @Transactional注解中的属性:
* propagation	:传播行为
* isolation	:隔离级别
* readOnly		:只读
* rollbackFor	:发生哪些异常回滚
* noRollbackFor:发生哪些异常不回滚
*/

@Transactional
//@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT,readOnly=true)
public class AccountServiceImpl implements AccountService {
//注入转账的DAO的类
private AccountDao accountDao;

public void setAccountDao(AccountDao accountDao) {
this.accountDao = accountDao;
}
/**
*
* @param out   :转出的账号
* @param in    :转入的账号
* @param money :转账金额
*/
@Override
public void transfer(String out, String in, Double money) {
// TODO Auto-generated method stub
accountDao.outMoney(out, money);
int d = 1/0;
accountDao.inMoney(in, money);
}

}


总结:



4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: