• spring5事务管理


    介绍

    1、事务添加到 JavaEE 三层结构里面 Service 层(业务逻辑层)
    2、在 Spring 进行事务管理操作
    有两种方式:编程式事务管理和声明式事务管理
    3、声明式事务管理
    (1)基于注解方式
    (2)基于 xml 配置文件方式
    4、在 Spring 进行声明式事务管理,底层使用 AOP 原理
    5、Spring 事务管理 API
    提供一个接口,代表事务管理器,这个接口针对不同的框架提供不同的实现类

    使用

    1、在 spring 配置文件配置事务管理器
    <!--创建事务管理器-->
    <bean id="transactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <!--注入数据源-->
    <property name="dataSource" ref="dataSource"></property>
    </bean>
    2、在 spring 配置文件,开启事务注解
    (1)在 spring 配置文件引入名称空间 tx
    <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"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.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">
    (2)开启事务注解
    <!--开启事务注解-->
    <tx:annotation-driven transaction
    manager="transactionManager"></tx:annotation-driven>
    3、在 service 类上面(或者 service 类里面方法上面)添加事务注解
    (1)@Transactional,这个注解添加到类上面,也可以添加方法上面
    (2)如果把这个注解添加类上面,这个类里面所有的方法都添加事务
    (3)如果把这个注解添加方法上面,为这个方法添加事务
    @Service
    @Transactional
    public class UserService {}

    完全注解声明式事务管理

    1、创建配置类,使用配置类替代 xml 配置文件
    @Configuration //配置类
    @ComponentScan(basePackages = "com.atguigu") //组件扫描
    @EnableTransactionManagement //开启事务
    public class TxConfig {
    //创建数据库连接池
    @Bean
    public DruidDataSource getDruidDataSource() {
    DruidDataSource dataSource = new DruidDataSource();
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql:///user_db");
    dataSource.setUsername("root");
    dataSource.setPassword("root");
    return dataSource;
    }
    //创建 JdbcTemplate 对象
    @Bean
    public JdbcTemplate getJdbcTemplate(DataSource dataSource) {
    //到 ioc 容器中根据类型找到 dataSource
    JdbcTemplate jdbcTemplate = new JdbcTemplate();
    //注入 dataSource
    jdbcTemplate.setDataSource(dataSource); return jdbcTemplate;
    }
    //创建事务管理器
    @Bean
    public DataSourceTransactionManager
    getDataSourceTransactionManager(DataSource dataSource) {
    DataSourceTransactionManager transactionManager = new
    DataSourceTransactionManager();
    transactionManager.setDataSource(dataSource);
    return transactionManager;
    }
    }
  • 相关阅读:
    MF干活——C#点灯神话
    开发板通用刷机教程
    如何找到并完成兼职项目
    如何获取最新的X组件及源码
    MF干活——C#数码管与跑马灯之舞(视频)
    MF前传——探索者一号简介
    .Net Micro Framework移植基础(包编译通过)
    Oracle免客户端For .Net(只为用NewLife.XCode开发Oracle的同学服务)
    XCode新增数据转换功能(导数据)
    MF前传——探索者二号简介
  • 原文地址:https://www.cnblogs.com/zhukaile/p/16037186.html
Copyright © 2020-2023  润新知