Spring 自动代理事务 中碰到了事务无法回滚的问题


我是一个spring 学习的初手, 在学习spring in action这本书的 事务自动代理 章节时,按照所说的方式,我先配置了一个自动代理和事务属性源advisor,如下:

 


 

 
  
           
   
 

  
          
  
  
        
  
 

 

 而后,我配置属性源,书上说有两种方式位自动代理选择一个属性源

 

一:


		
			
				
					PROPAGATION_REQUIRES_NEW,ISOLATION_REPEATABLE_READ,-PersonException
				
			
		
	

 在我的测试代码中,事务是可以回滚的,也就是说,-PersonException是起作用的,测试代码我贴上部分

public void insertPerson(final Person p) throws PersonException{
		getHibernateTemplate().save(p);		
		throw new PersonException();
	}

  但是,当我按照第二种方式配置属性源,则,没有预期的产生事务回滚:

	
		
		  
								
				
					PROPAGATION_REQUIRES_NEW,ISOLATION_REPEATABLE_READ,-PersonException				
			
		  
		
	

 

PS:用第二种属性源测试的时候,我上述拦截器tranInterceptor的transactionAttributeSource我换成了tranAttribute2的。

 

期望达人能帮小弟解决这个学习上的疑惑

 

谢谢

 

 

PS:此问题已经解决

 

问题的原因是:

 

PROPAGATION_REQUIRES_NEW,ISOLATION_REPEATABLE_READ,-PersonException


中的 中的 key属性要是接口,而不是实际类

你可能感兴趣的:(Spring 自动代理事务 中碰到了事务无法回滚的问题)