zoukankan      html  css  js  c++  java
  • Spring基于注解的事务控制

    1.基于注解的事务控制

    自定义的bean可以用注解,非自定义的就在配置中就可以了

    事务控制解析:

    (1)使用@Transactional在需要进行事务控制的类或是方法上修饰,注解可用的属性同xml配置方式,例如:隔离级别,传播行为等

    (2)注解使用在类上,那么该类下的所有方法都使用同一套注解参数配置

    (3)使用在方法上,不同的方法可以采用不同的事务参数配置

     (4)xml配置文件中要开启事务的注解驱动<tx:annotation-driven/>

     案例:同基于xml方式事务控制的案例

    下面是修改的部分

    AccountDaoImpl.java

    package com.company.dao.impl;
    
    import com.company.dao.AccountDao;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.stereotype.Repository;
    
    @Repository("accountDao")
    public class AccountDaoImpl implements AccountDao {
        @Autowired
        private JdbcTemplate jdbcTemplate;
    
        public void out(String outMan, double money) {
            jdbcTemplate.update("update account set money=money-? where name=? ", money, outMan);
        }
    
        public void in(String inMan, double money) {
            jdbcTemplate.update("update account set money=money+? where name=?",money, inMan);
        }
    }
    

      AccountServiceImpl.java

    package com.company.service.impl;
    
    import com.company.dao.AccountDao;
    import com.company.service.AccountService;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Isolation;
    import org.springframework.transaction.annotation.Propagation;
    import org.springframework.transaction.annotation.Transactional;
    
    @Service("accountService")
    public class AccountServiceImpl implements AccountService {
        @Autowired
        private AccountDao accountDao;
        @Transactional(isolation = Isolation.READ_COMMITTED,propagation = Propagation.REQUIRED)
        public void transfer(String outMan, String inMan, double money) {
            accountDao.out(outMan, money);
            accountDao.in(inMan, money);
        }
    }
    

      applicationContext.xml

    <?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:aop="http://www.springframework.org/schema/aop"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="
           http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    ">
    
        <!--组件扫描-->
        <context:component-scan base-package="com.company"/>
    
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="com.mysql.jdbc.Driver"/>
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"/>
            <property name="user" value="root"/>
            <property name="password" value="123456"/>
        </bean>
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
        <!--配置平台事务管理器-->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
        <!--事务的注解驱动-->
        <tx:annotation-driven transaction-manager="transactionManager"/>
    
    </beans>
    

    2.总结

    (1)平台事务管理配置(xml方式)

    (2)事务通知的配置(@Transactional注解配置)

    (3)事务注解驱动的配置<tx:annotation-driven/>

  • 相关阅读:
    CDH5.15.1 hive 连接mongodb配置及增删改查
    一些hue的参考网址
    CDH hue下定时执行hive脚步
    流式分析系统实现 之二
    流式分析系统实现 之一
    Spark升级--在CDH-5.15.1中添加spark2
    Spark 基础之SQL 快速上手
    CDH Spark-shell启动报错
    Spark SQL例子
    azkaban 配置邮件
  • 原文地址:https://www.cnblogs.com/GumpYan/p/14203583.html
Copyright © 2011-2022 走看看