文档章节

springboot 测试,事务相关

super-wen
 super-wen
发布于 2017/07/20 16:54
字数 411
阅读 46
收藏 1

springboot测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class TestServiceImplTest {

    @Autowired
    TestService testService;

    @Test
    public void add() throws Exception {
        TestBean testBean = new TestBean();
        testBean.setId(337595516089008160L);
        System.out.println(testService.add(testBean));
    }

}

这种情况下,是默认没有开启事务回滚的,当测试完成不会回滚数据.

开启测试完成回滚

@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
@Rollback
public class TestServiceImplTest {

    @Autowired
    TestService testService;

    @Test
//    @Rollback
    public void add() throws Exception {
        TestBean testBean = new TestBean();
        testBean.setId(337595516089008160L);
        System.out.println(testService.add(testBean));
    }

}

测试完成后,会类似看到下面输出,同时数据也会回滚.

2017-07-20 16:41:25.286  INFO 12528 --- [           main] o.s.t.c.transaction.TransactionContext   : Rolled back transaction for test context [DefaultTestContext@a3d8174 testClass = TestServiceImplTest,

Rollback注解,默认值true,开启回滚,可以在类上,也可以方法上

@Transactional(readOnly = true) 含义.

一直以来的理解都是声明只读事务,对其进行优化,当执行插入操作的时候抛出异常.

今天将其加在一个insert方法上面,发现测试插入成功.

  @Transactional(rollbackFor = Exception.class,readOnly = true)
    public int add(TestBean testBean) {
        int i =  testMapper.insert(testBean);
        return i;
    }

阅读源码.

	/**
	 * {@code true} if the transaction is read-only.
	 * <p>Defaults to {@code false}.
	 * <p>This just serves as a hint for the actual transaction subsystem;
	 * it will <i>not necessarily</i> cause failure of write access attempts.
	 * A transaction manager which cannot interpret the read-only hint will
	 * <i>not</i> throw an exception when asked for a read-only transaction
	 * but rather silently ignore the hint.
	 * @see org.springframework.transaction.interceptor.TransactionAttribute#isReadOnly()
	 */
	boolean readOnly() default false;

发现readOnly = true 只是对底层系统暗示要求只读事务,当底层支持时才会针对插入操作抛出异常,当不支持时,默默忽略(而大部分简单的jdbc都是不支持的)

Transactional 注解在父类上,子类有效

© 著作权归作者所有

共有 人打赏支持
super-wen
粉丝 5
博文 37
码字总数 13546
作品 0
徐汇
程序员
私信 提问
企业 SpringBoot 教程 (七)springboot开启声明式事务

springboot开启事务很简单,只需要一个注解@Transactional 就可以了。因为在springboot中已经默认对jpa、jdbc、mybatis开启了事事务,引入它们依赖的时候,事物就默认开启。当然,如果你需要...

itcloud
2018/09/30
0
0
Spring Boot学习笔记

多模块开发 [SpringBoot学习]-IDEA创建Gradle多Module结构的SpringBoot项目 RabbitMQ RabbitMQ 安装 linux安装RabbitMQ详细教程 Ubuntu 16.04 RabbitMq 安装与运行(安装篇) ubantu安装...

OSC_fly
2018/07/26
0
0
SpringBoot 学习二:操作数据库

本文将从以下几个方面介绍: 前言 配置数据源 SpringBoot 整合 Mybatis SpringBoot 整合 JdbcTemplate SpringBoot 整合 Redis 前言 在上篇文章 SpringBoot 学习一 中已经学习了 SpringBoot的...

tsmyk0715
2018/09/26
0
0
SpringBootBucket 2.0.4 发布,代号“傲娇的小二晶”

SpringBootBucket 自从1.0.0版本发布后就有好多人喜欢,目前码云上面star数量接近1.2k。上个月还收到了红薯签名的1000 star奖杯,这个我自己也觉得很惊讶。 由于SpringBoot 1.x官方将终止维护...

一刀
2018/09/16
1K
4
SpringBootBucket 1.0.0 发布,SprintBoot 全家桶

Spring Boot 现在已经成为Java 开发领域的一颗璀璨明珠,它本身是包容万象的,可以跟各种技术集成。 本项目对目前Web开发中常用的各个技术,通过和SpringBoot的集成,并且对各种技术通过“一...

一刀
2018/03/05
7.3K
17

没有更多内容

加载失败,请刷新页面

加载更多

弹窗时候禁止页面滚动

1、依靠css 将页面 document.documentElement.style.overflow='hidden'; document.body.style.overflow='hidden';//手机版设置这个。 如果设置了如上,页面的滚动条将会消失,此时鼠标滚轮失......

Jack088
25分钟前
7
0
.NET的数学库NMath实用教程——创建最小二乘法

NMath是一个适用于所有.NET语言,如C#、Visual Basic、F#和.NET的数学库,它包含了.NET平台上的面向对象数字计算的基础类。我们将以连载的形式向大家介绍NMath的实用教程,有任何建议或提示...

ymy_666666
25分钟前
2
0
索尼为收购工作室准备,对抗微软?

对比来说,索尼方面不但没有增加新的工作室,反而在过去两年内关闭了一些工作室。面对微软的步步紧逼,索尼最新的招聘广告暗示将来有可能会收购一些工作室。 在领英上,索尼互动娱乐发布了两...

linuxCool
25分钟前
2
0
公司网站有漏洞被入侵该怎么解决

2019年1月14日消息,thinkphp又被爆出致命漏洞,可以直接远程代码执行,getshell提权写入网站木马到网站根目录,甚至直接提权到服务器,该漏洞影响版本ThinkPHP 5.0、ThinkPHP 5.0.10、Think...

网站安全
38分钟前
4
0
centos7 Nginx+rtmp 搭建流媒体服务器

一. gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum -y install gcc gcc-c++ 二. PCRE pcre-devel 安装 PCRE(Perl Compatib...

legend3
55分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部