为了账号安全,请及时绑定邮箱和手机立即绑定
  • //相关代码(声明式 II——基于AspectJ的XML方式)——(中): @applicationContext3.xml <beans...> <!-- 引入外部的属性文件 --> <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> <!-- 配置业务层类 --> <bean id="accountService" class="cn.muke.spring.demo3.AccountServiceImpl"> <property name="accountDao" ref="accountDao"/> </bean> <!-- 配置DAO层类 --> <bean id="accountDao" class="cn.muke.spring.demo3.AccountDaoImpl"> <!-- 注入连接池,会帮我们创建一个JDBC模版 --> <property name="dataSource" ref="dataSource" /> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean>
    查看全部
  • //相关代码(声明式 II——基于AspectJ的XML方式)——(上): //package cn.muke.spring.demo3; @AccountServiceImpl.java /** * 转账案例的业务层实现类 */ public class AccountServiceImpl implements AccountService { // 注入转账的DAO的类 private AccountDao accountDao; public void setAccountDao(AccountDao accountDao) { this.accountDao = accountDao; } /** * @param out :转出账号 * @param in :转入账号 * @param money :转账金额 */ public void transfer(String out, String in, Double money) { accountDao.outMoney(out, money); int i=1/0;//这样一来,上面可以成功执行,下面就不会得到执行 accountDao.inMoney(in, money); } } @SpringDemo3.java /** * Spring的声明式事务管理的方式二的测试类:基于AspectJ的XML方式配置 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration("classpath:applicationContext3.xml") public class SpringDemo3 { /** * 注意:这里与方式一不同的是,不需要用 @Resource(name="ProxyClassName"),因为底层自动匹配 */ @Resource(name="accountService") private AccountService accountService; /** * 转账案例的测试类 */ @Test public void demo1(){ accountService.transfer("aaa", "bbb", 200d); } }
    查看全部
  • //相关代码(声明式 I——基于TransactionProxyFactoryBean的方式)——(下): <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 配置业务层的代理 --> <bean id="accountServiceProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <!-- 配置目标对象 --> <property name="target" ref="accountService" ></property> <!-- 注入事务管理器 --> <property name="transactionManager" ref="transactionManager" ></property> <!-- 注入事务属性 --> <property name="transactionAttributes"> <props> <!-- prop格式: * PROPAGATION:事务的传播行为。 * ISOLATION :事务的隔离级别。 * readOnly :只读(不可进行修改、插入、删除操作,否则报错)。 * -Exception :发生哪些异常回滚事务。 * +Exception :发生哪些异常事务不回滚,继续提交。 注意:如果设置多个值,用“,”隔开。 --> <prop key="transf*">PROPAGATION_REQUIRED,+Exception</prop> </props> </property> </bean> </beans> 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • //相关代码(声明式 I——基于TransactionProxyFactoryBean的方式)——(中): @applicationContext2.xml <beans...> <!-- 引入外部的属性文件 --> <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> <!-- 配置业务层类 --> <bean id="accountService" class="cn.muke.spring.demo2.AccountServiceImpl"> <property name="accountDao" ref="accountDao"/> </bean> <!-- 配置DAO层类 --> <bean id="accountDao" class="cn.muke.spring.demo2.AccountDaoImpl"> <!-- 注入连接池,会帮我们创建一个JDBC模版 --> <property name="dataSource" ref="dataSource" /> </bean>
    查看全部
  • 注意:无论是编程式还是声明式方式,配置事务管理器一定要有。代码如下: <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" ></property> </bean> 【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
    查看全部
  • 声明式注解第三种方式,除了在spring的配置文件添加事务管理器的bean,还要打开事务的注解,引用事务管理器。然后在需要事务管理的业务类添加一个事务注解,注解的值可以指定转播行为,是否只读,隔离级别
    查看全部
  • 声明式事务管理第二种方式:通过使用aop的方式,spring配置文件定义一个通知,制定事务管理器和事务传播行为等,再配置apo的切入点和切面,切面引用切入点,制定切入的方法等
    查看全部
  • 声明式事务管理,就是在spring的配置文件,添加事务管理代理的bean,里面引用要代理的业务bean和事务管理器,并且制定事务属性说明事务要操作业务类的方法,和隔离级别,传播行为等
    查看全部
  • 事务管理器,需要引用连接池获取连接connection对象 是用事务管理模板来操作事务管理器,然后在需要事务管理的业务类注入事务管理模板对象,调用指定方法,把需要事务操作的代码写在它的匿名内部类的方法中即可,这就是编程式事务管理,通过代码的方式实现
    查看全部
  • 事务操作是操作业务层的; 定义事务的传播行为是为了解决 业务层内部方法互相调用的问题
    查看全部
  • 不同数据库,spring提供了不同事务管理器实现类
    查看全部
  • spring事务管理的3个接口 PlatformTransactionManager平台事务管理器 TransactionDefine事务定义接口 定义隔离级别等 TransactionStatus事务状态接口
    查看全部
    0 采集 收起 来源:接口介绍

    2016-04-22

  • 事务的概念: 指一组逻辑操作,要么都成功,要么都失败 事务的特性: 原子性:一组操作是不可分割的最小单元操作 隔离性:多个事务之间不应该互相影响 持久性:一旦一个事务执行完之后,就永远持久化,执行完之后的数据不再受影响
    查看全部
    0 采集 收起 来源:事务回顾

    2016-04-22

  • 课程目标: 了解事务的概念 spring事务的api spring事务的编程式事务 spring事务的声明式事务
    查看全部
  • 事物的回顾
    查看全部

举报

0/150
提交
取消
课程须知
学习本课程前需要熟悉Spring的基础知识,掌握IOC和AOP的基本概念。小伙伴们可参考《Spring入门》课程
老师告诉你能学到什么?
1、理解Spring事务管理的基本概念 2、掌握Spring事务管理的应用场景 3、掌握声明式事务管理和编程式事务管理的实现方式

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!