@TransactionConfiguration过时与替代写法
在使用了Spring的项目中做单元测试时,以前的标准写法是这样的:
但是在高版本的Spring框架中(Spring4.2以后),@TransactionConfiguration已经标注为过时的注解,查看官方文档会发现,替代的方式为:
这里需要说明的是:
(1).原来的defaultRollback属性现在由专门的注解@Rollback(新增注解)代替,其中只有一个属性就是boolean型的value,作用没变,值为true表示测试时如果涉及了数据库的操作,那么测试完成后,该操作会回滚,也就是不会改变数据库内容;值为false则与此相反,表示你测试的内容中对数据库的操作会真实的执行到数据库中,不会回滚。官方文档中还给出了一个新注解@Commit,该注解与@Rollback只能使用一个,同时用貌似可能出现问题,@Commit注解中无属性需要设置,不像@Rollback中还有一个value属性,用了@Commit,你的测试操作会改变数据库,不会回滚,等同于@Rollback(value=false)。这里建议使用@Rollback,不要用@Commit,这样起码你有两种选择可以选。
(2).原来放在@TransactionConfiguration注解中的transactionManager属性现在放在了@Transactionl注解中。
顺便提一下@RunWith注解的作用,了解的朋友可以走人了。
首先我们写了一个测试类,像上面截图中的BaseDaoTestCase一样,该类中会有许多测试方法,测试方法上面会利用@BeforeClass、@before、@Test、@after、@AfterClass 这5个注解进行测试,类有了,方法有了,那么当你执行某个测试方法时,是由谁来调用的这个测试方法呢,或者说,你执行的测试方法是在哪里运行的呢,答案就是@RunWith注解里面标注的类,也就是说这个注解的作用是告诉系统你执行测试方法时,调用者是谁,这里就是SpringJunit4ClassRunner类。默认情况下,也就是假如你省略了@RunWith注解,测试类上面不写它,系统默认的是相当于你注解了@RunWith(BlockJUnit4ClassRunner.class),实际上SpringJunit4ClassRunner继承了BlockJUnit4ClassRunner。因为你的项目中使用了Spring,那么测试方法中要测试的内容一般都会用到Spring管理的bean,此时你只能用SpringJunit4ClassRunner而不能用BlockJUnit4ClassRunner了,否则Spring环境中管理的东西你是无法在测试方法中使用的,测试方法拿不到会报空指针。
@TransactionConfiguration过时与替代写法的更多相关文章
- Android中getDrawable和getColor过时的替代方法
版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 Android SDK 升级到 23 之后,getDrawable和getColor方法提示过时. 解决方案 getResources(). ...
- oracle中not in 和 in 的替代写法
-- not in 的替代写法select col from table1 where col not in(select col from table2); select col,table2.co ...
- jquery live hover事件的替代写法
HTML中的hover行为通常在样式中定义,利用jquery实现此效果有两种情况. 第一种是常见的针对页面中静态的元素,以改变元素样式中的border-color为例,写法如下: $(function ...
- ORACLE变量定义及使用(另,T-SQL EXISTS的PLSQL替代写法)
1. 简单变量 declare v_cnt NUMBER(10,0) := 0; BEGIN SELECT COUNT(1) INTO v_cnt FROM concept.Decoction W ...
- getColor()方法过时的替代方法
Android SDK 升級到 23 之後,getResource.getColor(R.color.color_name) 過時 使用新加入的方法 ContextCompat.getColor(co ...
- Android过时方法替代
managedQuery替换为cursorLoader example: uri = data.getData(); String[] proj = {MediaStore.Images.Media. ...
- Sigmoid函数的替代:overflow encountered in exp in computing the logistic function
RuntimeWarning: overflow encountered in exp in computing the logistic function 以下是sigmoid函数的标准写法,但是如 ...
- Android 偶遇小问题解决方案集合
1.Android 如何让EditText不自动获取焦点 解决方案:找一个EditText的父级控件把EditText默认的行为截断了!设置 android:focusable="true& ...
- AngularJs的UI组件ui-Bootstrap分享(十)——Model
Model是用来创建模态窗口的,但是实际上,并没有Model指令,而只有$uibModal服务,创建模态窗口是使用$uibModal.open()方法. 创建模态窗口时,要有一个模态窗口的模板和对应的 ...
随机推荐
- mybatis复习01
1.mybatis的历史: mybatis是apache的一个开源项目,2010被google收购,转移到google code. mybatis是一个优秀的持久层框架,对jdbc操作进行了封装,是操 ...
- JMETER CSS JQUERY EXTRACTOR
我想如果你在这里,你可能已经访问了我们关于变量提取的JMeter系列: XPath Extractor:使用XPath Expressions从XML响应中提取内容, Regexp Extractor ...
- lintcode-dfs实现二叉树的层序遍历
class Solution { /** * @param root: The root of binary tree. * @return: Level order a list of lists ...
- JPA教程
http://www.yiibai.com/jpa/jpa_criteria_api.html
- GUI的最终选择 Tkinter(三):Checkbutton组件和Radiobutton组件、LabelFrame组件
Checkbutton组件 Checkbutton组件就是常见的多选按钮,而Radiobutton则是单选按钮 from tkinter import * root = Tk() v = IntVar ...
- Tkinter的l组件常用属性
Label常用属性 序号 属性 说明 1 anchor 指示文字会被放在控件的什么位置, 可选项有 N, NE, E, SE, S, SW, W, NW, CENTER. 默认为 CENTER. ...
- Vue 项目: npm run dev b报错 “'webpack-dev-server' 不是内部或外部命令,也不是可运行的程序 或批处理文件。”
前提: 电脑已经安装了nodeJS和npm, 项目是直接下载的zip包. 报错步骤为1:cd /d 目录: 2. npm ren dev -------> 报错如下: > webpac ...
- Vue源码学习之数据初始化
首发地址:CJWbiu's Blog 在这里思考一个问题,使用Vue的时候需要在创建Vue实例时传入一个option,这里包含了我们定义的props.methods.data等.而在methods的方 ...
- Java文件与io——装饰者模式
意图: 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比于生成子类更为灵活.该模式以对客户端透明的方式扩展对象的功能. 适用环境 在不影响其他对象的情况下,以动态.透明的 ...
- java里如何实现两个等长度的字符串数组有多少个元素相同(从最左边开始,一旦遇到不同元素则跳出计数)
不多说,直接上干货! package zhouls.bigdata.DataFeatureSelection.sim; public class test { public static int st ...