标签:业务逻辑 username 管理 mvc commit 推荐 blog location point
上篇主要从编程式事务和声明式事务注解的形式来了解了事务,而这篇我们针对AOP的方式来实现事务。先回顾下事务的基础知识事务的隔离级别和事务的传播行为。使用aop 配置事务时注意引用aspectjweaver,要不然程序启动起来就会报错,找不到相关类
隔离级别是指若干个并发的事务之间的隔离程度。TransactionDefinition 接口中定义了五个表示隔离级别的常量:
所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。在TransactionDefinition定义中包括了如下几个表示传播行为的常量:
<!--配置数据源,这里使用Spring默认--> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${sqlserver.driver}"/> <property name="url" value="${sqlserver.url}"/> <property name="username" value="${sqlserver.username}"/> <property name="password" value="${sqlserver.password}"/> </bean> <!--配置sqlSessionFactory--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:springmvc-mybatis.xml"/> <property name="dataSource" ref="dataSource"/> </bean> <!--扫描mapper--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.autohome.dao"/> </bean> <!--事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="insert*" isolation="DEFAULT" propagation="REQUIRED"/> <tx:method name="*" read-only="true" /> </tx:attributes> </tx:advice> <!--只对业务逻辑层开启事务--> <aop:config expose-proxy="true"> <aop:pointcut id="txPointcut" expression="execution(* com.autohome.service..*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/> </aop:config>
运行action后,console会打印入库成功的提示,从数据库里查询其实数据已经回滚。
以上两篇总结了事务两种配置方式,编程式事务和声明式事务,而从应用的角度来看@Transactional注解属性最简单也最实用,aop的方式控制更细腻些。同时回顾了基础知识事务传播属性和隔离级别,这两个地方不好理解,平时解除的业务解除相对也很好,还要继续摸索和demo。
https://www.ibm.com/developerworks/cn/education/opensource/os-cn-spring-trans/index.html
标签:业务逻辑 username 管理 mvc commit 推荐 blog location point
原文地址:http://www.cnblogs.com/sword-successful/p/7308022.html