栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringDay04

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringDay04

一、概念
  • 1.1 事务
    • 事务是数据库操作最基本的单元,逻辑上的一组操作要么都成功,如果有一个失败所有操作都失败。
    • 典型场景-银行转账
      • Lucy转账100给Mary
      • Lucy少100,Mary多100

  • 1.2 事务的四个特性
    • 原子性:要么都成功,如果有一个失败所有操作都失败
    • 一致性:Lucy和Mary各有100,两人共有200,Lucy把100给Mary,Lucy是0,Mary是200,和仍是200
    • 隔离性:多事务操作之间相互不影响
    • 持久性:提交事务后,不再变化

二、事务(Spring事务管理介绍)
  • 2.1 事务添加到JavaEE三层架构里面的Service层

  • 2.2 在Spring进行事务管理操作
    • 有两种方式:编程式事务管理 和声明式事务管理(常用)
      • 声明式事务管理
        • 注解方式
        • xml配置文件方式

  • 2.3 在Spring种进行声明式事务管理,底层使用AOP原理

  • 2.4 Spring事务管理API
    • 提供一个接口,代表事务管理器,这个接口针对不同的框架提供不同的实现类

三、事务操作(注解声明式事务管理)
  • 3.1 使用@Bean创建置事务管理器对象
    	@Bean
        public DataSourceTransactionManager dataSourceTransactionManager(){
            DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
            DataSource dataSource = dataSource();
            dataSourceTransactionManager.setDataSource(dataSource);
            return dataSourceTransactionManager;
        }
    

  • 3.2 在配置类SpringConfig上添加注解@EnableTransactionManagement
    • @EnableTransactionManagement 设置当前Spring环境中开启注解式事务支持

  • 3.3 在 service 类上面(或者 service 类里面方法上面)添加事务注解
    • @Transactional,这个注解添加到类上面,也可以添加方法上面
    • 如果把这个注解添加类上面,这个类里面所有的方法都添加事务
    • 如果把这个注解添加方法上面,为这个方法添加事务

四、事务操作(声明式事务管理参数配置)
  • 4.1 在 service 类上面添加注解@Transactional,在这个注解里面可以配置事务相关参数
    @AliasFor("value")
        String transactionManager() default "";
    
        String[] label() default {};
    
        Propagation propagation() default Propagation.REQUIRED;
    
        Isolation isolation() default Isolation.DEFAULT;
    
        int timeout() default -1;
    
        String timeoutString() default "";
    
        boolean readOnly() default false;
    
        Class[] rollbackFor() default {};
    
        String[] rollbackForClassName() default {};
    
        Class[] noRollbackFor() default {};
    
        String[] noRollbackForClassName() default {};
    
    • REMARK
      • propagation:事务的传播行为
      • isolation:隔离级别
      • timeout:超时时间
      • readOnly:只读
      • rollbackFor
      • noRollbackFor

  • 4.2 propagation:事务的传播行为
    • 当一个事务方法被另一个事务方法调用的时候,这个方法如何运行

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1020495.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号