zoukankan      html  css  js  c++  java
  • spring基于注解的声明式事务控制

    package com.hope.service.impl;

    import com.hope.dao.IAccountDao;
    import com.hope.domain.Account;
    import com.hope.service.IAccountService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.annotation.Propagation;
    import org.springframework.transaction.annotation.Transactional;

    /**
    * @author newcityman
    * @date 2019/11/20 - 16:45
    */
    @Service("accountService")
    @Transactional(readOnly = true,propagation = Propagation.SUPPORTS)
    public class AccountServiceImpl implements IAccountService {
    @Autowired
    private IAccountDao accountDao;


    public Account findAccountById(Integer accountId) {
    return accountDao.findAccountById(accountId);

    }
    @Transactional(readOnly = false,propagation = Propagation.REQUIRED)
    public void transfer(String sourceName, String targetName, Float money) {
    Account source = accountDao.findAccountByName(sourceName);
    Account targe = accountDao.findAccountByName(targetName);
    source.setMoney(source.getMoney() - money);
    targe.setMoney(targe.getMoney() + money);
    accountDao.updateAccount(source);
    // int i = 1 / 0;
    accountDao.updateAccount(targe);
    }

    }

    <?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/tx
    http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">

    <!--配置spring容器创建时要扫描的包-->
    <context:component-scan base-package="com.hope"></context:component-scan>

    <!--配置jdbcTemplate-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!--数据源-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/easy"/>
    <property name="username" value="root"/>
    <property name="password" value="123"/>
    </bean>


    <!--spring中基于注解的声明式事务控制配置步骤
    1、配置事务管理器
    2、开启spring对注解事务的支持
    3、在需要事务支持的地方使用@transactional

    -->
    <!--配置事务-->
    <!--配置事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!--开启spring对注解事务的支持-->
    <tx:annotation-driven transaction-manager="transactionManager" ></tx:annotation-driven>
    </beans>
     
  • 相关阅读:
    eas之排序接口
    eas中删除原来的监听事件添加新的监听事件
    eas之获取单据编码规则
    eas更改用户组织范围和业务组织范围
    ECMAScript 6 文档
    java网络编程介绍
    计算机网络-总结(三)
    Lombok包下常用注解
    计算机网络介绍(二)
    计算机网络介绍(一)
  • 原文地址:https://www.cnblogs.com/newcityboy/p/11930004.html
Copyright © 2011-2022 走看看