spring基于注解 的声明式事务控制(配置方式)

spring基于注解 的声明式事务控制(配置方式)

第一步:配置事务管理器并注入数据源

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

第二步:在业务层使用@Transactional 注解

@Service("accountService") 
@Transactional(readOnly=true,propagation=Propagation.SUPPORTS) 
public class AccountServiceImpl implements IAccountService {   
	 @Autowired  
	 private IAccountDao accountDao; 
	 
	 @Override  
	 public Account findAccountById(Integer id) {
	    return accountDao.findAccountById(id);  
	 } 
	 
	 @Override  
	 @Transactional(readOnly=false,propagation=Propagation.REQUIRED)  
	 public void transfer(String sourceName, String targeName, Float money) { 
		  //1.根据名称查询两个账户   
		  Account source = accountDao.findAccountByName(sourceName);   
		  Account target = accountDao.findAccountByName(targeName); 
		  //2.修改两个账户的金额   
		  source.setMoney(source.getMoney()-money);//转出账户减钱   
		  target.setMoney(target.getMoney()+money);//转入账户加钱   
		  //3.更新两个账户   
		  accountDao.updateAccount(source);   
		  //int i=1/0; 
		  accountDao.updateAccount(target); 
	 } 
} 
 
该注解的属性和 xml 中的属性含义一致。该注解可以出现在接口上,类上和方法上。 
出现接口上,表示该接口的所有实现类都有事务支持。 
出现在类上,表示类中所有方法有事务支持 出现在方法上,表示方法有事务支持。
以上三个位置的优先级:方法>>接口 

第三步:在配置文件中开启 spring 对注解事务的支持

<!-- 开启 spring 对注解事务的支持 --> 
<tx:annotation-driven transaction-manager="transactionManager"/> 
发布了35 篇原创文章 · 获赞 26 · 访问量 7167

猜你喜欢

转载自blog.csdn.net/qq_42804736/article/details/103759292