JavaEE spring事务管理——基于注解的声明式服务

通过注解实现spring事务管理非常简单,开发者只需要做两件事,

1.在spring容器中注册事务注解驱动,

2.在需要使用到事务的spring bean类或者bean类的方法上添加注解@transaction

下面以Annotation方式实现事务管理,具体步骤如下:

(本节代码套用上一篇文章中的代码,,,上一篇文章点这里)

一、在src目录下,创建一个Spring配置文件applicationContext-annotation.xml在该文件中声明是管理器等配置信息



        
        
        
            
            
            
            
            
            
            
             
        
       
        
        
            
            
        
        
        
        
            
        
        
        
        
		     
        	
       
        
        
        

二、在AccountDaoImpl类的transfer()方法上添加注解,添加过后的代码如下所示:

@Transactional
	public void transfer(String outUser, String inUser, double money) {
		//收款操作
		this.jdbcTemplate.update("update account set balance = balance + ? where username = ?",money,inUser);
		
		int i=1/0;
		//收款操作
		this.jdbcTemplate.update("update account set balance = balance - ? where username = ?",money,outUser);
	}

三、在TransactionTest测试类中,创建测试方法annotationTest(),编辑后的代码如下所示:

@Test
	public void annptationTest() {
		ApplicationContext cast = new ClassPathXmlApplicationContext("applicationContext-annotation.xml");
		AccountDao accountDao = (AccountDao) cast.getBean("accountDao");
		
		//调用实例中的转账方法
		accountDao.transfer("rose", "joy", 100.0);
		System.out.println("转账成功了!");
	}

四、检查功能实现情况

首先先看一下数据表account中

JavaEE spring事务管理——基于注解的声明式服务_第1张图片

接着执行以下测试程序,注意此时transaction方法中含有除零错误,所以如果事务管理若是起作用的话应该是双方账户余额不变

JavaEE spring事务管理——基于注解的声明式服务_第2张图片

执行后发现提示是出现除零错误,再次查看数据表,

JavaEE spring事务管理——基于注解的声明式服务_第3张图片

发现账户余额确实没有发生变化,接着下面将除零错误去除

再次测试

JavaEE spring事务管理——基于注解的声明式服务_第4张图片

提示执行正常了,现在再次查询数据表

JavaEE spring事务管理——基于注解的声明式服务_第5张图片

 

发现确实发生了账户余额转移,结合刚才发生错误时的情况对比我们就会发现,基于注解的Spring事务管理确实正常工作了

 

你可能感兴趣的:(JavaEE spring事务管理——基于注解的声明式服务)