-
<!-- 配置业务层类 --> <bean id="accountService" class="cn.muke.spring.demo1.AccountServiceImpl"> <property name="accountDao" ref="accountDao"/> <!-- 注入事务管理的模版 --> 哪个类需要事务管理,就在哪个类中注入事务管理模版 <property name="transactionTemplate" ref="transactionTemplate"/> </bean> <!-- 配置DAO类 --> <bean id="accountDao" class="cn.muke.spring.demo1.AccountDaoImpl"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 配置事务管理模版,spring为了简化事务管理的代码而提供的类 --> <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager" ref="transactionManager"/> </bean>查看全部
-
事务管理模版是真正来进行事务管理的类,数据库连接池可以获得到具体的连接对象查看全部
-
/** * 转账案例的测试类 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext.xml") public class SpringDemo1 { //测试业务层类 @Resource(name="accountService") private AccountService accountService; @Test public void demo1() { accountService.transfer("aaa","bbb",200.0); } }查看全部
-
@Override public void transfer(String out, String in, Double money) { accountDao.outMoney(out, money); int i = 1 / 0; accountDao.inMoney(in, money); } 没有事务事务,会导致 accountDao.outMoney(out, money);被执行 钱扣出去了 但是 int i = 1 / 0;会报异常,也就是 accountDao.inMoney(in, money);不会执行,等于钱扣出去了但是收钱的钱没有增加,这就是没有使用事务的弊端 ------------------------------------ 事务保证要么一起全部成功,要么一起失败查看全部
-
<!-- 引入外部属性文件 --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 配置c3p0数据库连接池--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverClass}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean>查看全部
-
/** * 转账案例的业务层实现类 */ public class AccountServiceImpl implements AccountService { //注入转账的DAO类,使service能够调用DAO的方法 private AccountDao accountDao; public void setAccountDao(AccountDao accountDao) { this.accountDao = accountDao; } @Override public void transfer(String out, String in, Double money) { accountDao.outMoney(out, money); accountDao.inMoney(in, money); } }查看全部
-
/** * 转账案例的业务层接口 */ public interface AccountService { /** * @param out 转出帐号 * @param in 转入帐号 * @param money 转账金额 */ public void transfer(String out, String in, Double money); }查看全部
-
/** * 转账案例DAO层接口 */ public interface AccountDao { /** * @param out 转出帐号 * @param money 转账金额 */ public void outMoney(String out, Double money); /** * @param in 转入帐号 * @param money 转入金额 */ public void inMoney(String in, Double money); } <!-- 配置DAO类 --> <bean id="accountDao" class="cn.muke.spring.demo1.AccountDaoImpl"> <property name="dataSource" ref="dataSource"/> </bean>查看全部
-
/** * 转账案例DAO层实现类 */ public class AccountDaoImpl extends JdbcDaoSupport implements AccountDao { /** * @param out 转出帐号 * @param money 转账金额 */ @Override public void outMoney(String out, Double money) { String sql = "UPDATE account SET money = money - ? WHERE name = ?"; this.getJdbcTemplate().update(sql, money, out); } /** * @param in 转入帐号 * @param money 转入金额 */ @Override public void inMoney(String in, Double money) { String sql = "UPDATE account SET moeny = money + ? WHERE name = ?"; this.getJdbcTemplate().update(sql, money, in); } }查看全部
-
/** * 转账案例的业务层实现类 */ public class AccountServiceImpl implements AccountService { //注入转账的DAO类,使service能够调用DAO的方法 private AccountDao accountDao; public void setAccountDao(AccountDao accountDao) { this.accountDao = accountDao; } @Override public void transfer(String out, String in, Double money) { accountDao.outMoney(out, money); accountDao.inMoney(in, money); } }查看全部
-
//注入转账的DAO类,使service能够调用DAO的方法 private AccountDao accountDao; public void setAccountDao(AccountDao accountDao) { this.accountDao = accountDao; } <!-- 配置业务层类 --> <bean id="accountService" class="cn.muke.spring.demo1.AccountServiceImpl"> <property name="accountDao" ref="accountDao"/> </bean>查看全部
-
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd"> 最全spring约束配置查看全部
-
Spring支持两种方式事务管理查看全部
-
TransactionStatus接口用来记录事务的状态 该接口定义了一组方法,用来获取或判断事务的相应状态信息.查看全部
-
事务传播行为 七种 三类 重点记标红的 第一类:前三个 重点第一个 第二类:中间三个 重点第一个 主要在做aaa()和bbb()没有在同一事务里边的操作 第三类:最后一个 最后一个 - 嵌套事务 - 执行完aaa()的时候,使用事务设置了一个保存点,再执行bbb(),如果bbb()没有异常,就一起提交了 如果有异常,会根据自己的设定(可以设置为回滚到保存点的位置,也可以回滚到初始状态) ----------------- 重点记标红的 分别表示 在同一事务中 不在同一事务中 事务嵌套 - aaa事务完成之后设置一个保存点,如果bbb发生异常,设置回滚到保存点的位置或者回滚到最初始化查看全部
举报
0/150
提交
取消