关于Spring MVC注解 @Transactional 事务标签 @InitBinder 标签

主要用到了spring-aop-2.5.6.jar的AOP支持包!

之前我们在AccountService中加入了注解 @Transactional标签,但是要想要真正发挥事务作用,还需要一些配置。
主要需要调整dao.xml文件
dao.xml-事务管理
Xml代码 复制代码
  1. <bean  
  2.     id="transactionManager"  
  3.     class="org.springframework.jdbc.datasource.DataSourceTransactionManager"  
  4.     p:dataSource-ref="dataSource" />  
  5. <tx:annotation-driven  
  6.     transaction-manager="transactionManager" />  
  1. <bean  
  2.     id="transactionManager"  
  3.     class="org.springframework.jdbc.datasource.DataSourceTransactionManager"  
  4.     p:dataSource-ref="dataSource" />  
  5. <tx:annotation-driven  
  6.     transaction-manager="transactionManager" />  


细化一下AccountService接口方法
AccountService.java

Java代码 复制代码
  1. /**  
  2.  * 2010-1-23  
  3.  */  
  4. package org.zlex.spring.service;   
  5.   
  6. import org.springframework.dao.DataAccessException;   
  7. import org.springframework.transaction.annotation.Transactional;   
  8. import org.zlex.spring.domain.Account;   
  9.   
  10. /**  
  11.  * 账户业务接口  
  12.  *   
  13.  * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>  
  14.  * @version 1.0  
  15.  * @since 1.0  
  16.  */  
  17. public interface AccountService {   
  18.   
  19.     /**  
  20.      * 获得账户  
  21.      *   
  22.      * @param username  
  23.      * @param password  
  24.      * @return  
  25.      */  
  26.     @Transactional(readOnly = true)   
  27.     Account read(String username, String password);   
  28.   
  29.     /**  
  30.      * 获得账户  
  31.      *   
  32.      * @param id  
  33.      * @return  
  34.      */  
  35.     @Transactional(readOnly = true)   
  36.     Account read(int id);   
  37.   
  38.     /**  
  39.      * 注册用户  
  40.      *   
  41.      * @param account  
  42.      * @return  
  43.      */  
  44.     @Transactional(readOnly = false, rollbackFor = DataAccessException.class)   
  45.     Account register(Account account);   
  46. }  
  1. /** 
  2.  * 2010-1-23 
  3.  */  
  4. package org.zlex.spring.service;  
  5.   
  6. import org.springframework.dao.DataAccessException;  
  7. import org.springframework.transaction.annotation.Transactional;  
  8. import org.zlex.spring.domain.Account;  
  9.   
  10. /** 
  11.  * 账户业务接口 
  12.  *  
  13.  * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a> 
  14.  * @version 1.0 
  15.  * @since 1.0 
  16.  */  
  17. public interface AccountService {  
  18.   
  19.     /** 
  20.      * 获得账户 
  21.      *  
  22.      * @param username 
  23.      * @param password 
  24.      * @return 
  25.      */  
  26.     @Transactional(readOnly = true)  
  27.     Account read(String username, String password);  
  28.   </
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Spring MVC 是一种基于Spring框架的Web开发框架,它是基于模型-视图-控制器(MVC)设计模式来组织和管理Web应用程序的开发的。数据库事务是保证数据操作的一致性和可靠性的重要机制。 在Spring MVC中,数据库事务的实现主要依赖于Spring框架内置的事务管理器。Spring框架为我们提供了多种事务管理器的实现方式,例如基于JDBC的DataSourceTransactionManager和基于JPA的JpaTransactionManager等。这些事务管理器实现了Spring的PlatformTransactionManager接口,它负责管理和控制事务的生命周期。 Spring MVC中使用注解@Transactional来标注需要参与事务管理的方法或类。被@Transactional标注的方法或类,会在运行时被Spring框架内置的AOP机制拦截,以实现事务的控制。当方法被调用时,Spring框架首先会检查当前线程是否已经有一个事务实例存在,如果不存在则创建一个新的事务,如果存在则加入已存在的事务中。 一旦事务创建成功,Spring框架会开始执行方法体中的业务逻辑操作。如果方法执行成功,事务将会继续提交,操作的结果将会永久保存到数据库中。如果方法执行失败或发生异常,Spring框架会回滚事务,将操作的结果恢复到之前的状态。这样可以确保在出现异常情况时,数据库的数据不会被污染或损坏。 事务的提交和回滚是由Spring框架的事务管理器来完成的。事务管理器负责管理事务的开始、提交和回滚等操作,并与底层的数据库连接进行交互。Spring框架还提供了各种配置选项,可以通过配置文件或注解来灵活地控制事务的传播行为、隔离级别、超时设置等。这些配置选项可以根据实际业务需求进行调整,以提供更好的性能和可靠性。 总而言之,Spring MVC中的数据库事务的实现原理是依赖于Spring框架提供的事务管理器和AOP机制。通过使用@Transactional注解,我们可以简单地将需要参与事务管理的方法或类进行标注,使其具备事务性的功能。这样可以实现对数据库操作的一致性和可靠性保证。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值