Spring 事务管理
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 事务管理相关的知识,希望对你有一定的参考价值。
何为事务,很多从只从Java入门的朋友肯定不清楚这个概念,毕竟Spring是针对企业应用开发的 是J2EE规范下的产物,所以很多东西,新手入门肯定没有听说过。
因为我以前是web狗 SQL注入是自来熟,所以事务这个概念,再熟悉不过,它其实是一个数据库操作的概念,不管是ORM 还是JDBC数据源,它本身的针对数据库的操作都是SQL来实现的,
SQL中就提及到一个非常重要的概念,那就是事务,因为SQL命令CRUD数据库 很有可能会出错,所以必须得开始一个事务,然后在修改 查询之后,确定修改成功才提交事务,这个时候数据库才会把数据持久化到
硬盘中去,否则可以丢弃本次事务,修改不会被持久化到硬盘里面。
针对事务配置,我在慕课上看了视频,比较好理解 也比较容易配置的就是注解了,这里我贴上注解式的声明代码
package pw.jonwinters.demo4; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; //配置事务的 事务的传播行为 隔离级别 注销这个注解之后,此类中方法产生异常的话,事务不会被回滚,产生异常前针对数据库操作的方法会被持久化 @Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT) public class AccountServiceImpl implements AccountService { //@Autowired private AccountDao accountDao; public void setAccountDao(AccountDao accountDao) { this.accountDao = accountDao; } @Override public void transfer(final String out, final String in, final Double money) { accountDao.outMoney(out, money); //int result = 1/0; //注释掉了 除0的异常
accountDao.inMoney(in, money);//因为上面有注解,这个类会被代理,即使产生异常,上面那条针对数据库的操作也不会被持久化
} }
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <tx:annotation-driven transaction-manager="transactionManager" />
上面是配置事务管理,然后开启默认注解驱动扫描,配置事务管理器 为DataSourceTransactionManager
以上是关于Spring 事务管理的主要内容,如果未能解决你的问题,请参考以下文章
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
Spring boot:thymeleaf 没有正确渲染片段
What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段
spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段