Spring学习-34:Spring中的事务管理之声明式事务(基于注解)

Spring中的事务管理之声明式事务(基于注解)是基于,它默认查找名称为transactionmanager的事务管理器Bean。

这个很简单,请看例子。

首先,恢复项目环境。详见环境搭建。

1、配置applicationContxt.xml:配置事务管理器、并开启注解的事务管理

  
 
  
  
  
  
      
      
      
      
  
  
  
      
  
  
  
      
  
  
  
      
      
 


	



  
2、在Service上使用注解AccountServiceImpl:@Transactional


package com.js.demo4;

import org.springframework.transaction.annotation.Transactional;

@Transactional
public class AccountServiceImpl implements AccountService{
	private AccountDao accountDao;
	public void setAccountDao(AccountDao accountDao) {
		this.accountDao = accountDao;
	}
	/**
	 * 转账的方法
	 * @param from:从哪转出
	 * @param to:转入目标
	 * @param money:转账金额
	 */
	public void transfer(String from, String to,double money) {
				accountDao.out(from, money);
//				int i = 4/0;
				accountDao.in(to, money);
	}
}

该注解有很多属性,大家使用的话就会发现属性名并不陌生:

Spring学习-34:Spring中的事务管理之声明式事务(基于注解)_第1张图片

3、进行测试:

(3.1)有异常:

package com.js.demo4;

import org.springframework.transaction.annotation.Transactional;

@Transactional()
public class AccountServiceImpl implements AccountService{
	private AccountDao accountDao;
	public void setAccountDao(AccountDao accountDao) {
		this.accountDao = accountDao;
	}
	/**
	 * 转账的方法
	 * @param from:从哪转出
	 * @param to:转入目标
	 * @param money:转账金额
	 */
	public void transfer(String from, String to,double money) {
				accountDao.out(from, money);
				int i = 4/0;
				accountDao.in(to, money);
	}
}

package com.js.demo4;

import org.springframework.transaction.annotation.Transactional;

@Transactional()
public class AccountServiceImpl implements AccountService{
	private AccountDao accountDao;
	public void setAccountDao(AccountDao accountDao) {
		this.accountDao = accountDao;
	}
	/**
	 * 转账的方法
	 * @param from:从哪转出
	 * @param to:转入目标
	 * @param money:转账金额
	 */
	public void transfer(String from, String to,double money) {
				accountDao.out(from, money);
				int i = 4/0;
				accountDao.in(to, money);
	}
}


(3.2)无异常:

package com.js.demo4;

import org.springframework.transaction.annotation.Transactional;

@Transactional()
public class AccountServiceImpl implements AccountService{
	private AccountDao accountDao;
	public void setAccountDao(AccountDao accountDao) {
		this.accountDao = accountDao;
	}
	/**
	 * 转账的方法
	 * @param from:从哪转出
	 * @param to:转入目标
	 * @param money:转账金额
	 */
	public void transfer(String from, String to,double money) {
				accountDao.out(from, money);
//				int i = 4/0;
				accountDao.in(to, money);
	}
}

事务测试通过。使用起来很简单,不是吗?





你可能感兴趣的:(Spring,Spring学习之路)