Web 收到申请表格提交的数据后都需要对其进行合法性检查,假设表单数据是不合法的,该请求将被拒绝。分类似的,当我们写的类方法,该方法还经常需要组合成参 法国检查。假设参议院不符合要求,方法通过抛出异常的方法也许是拒绝治疗。有关示例::InputStream getData(String file)。为了使方法可以成功运行,必须保证 file 入參不能为 null 或空白字符,否则根本无须进行后继的处理。

这时方法的编写者一般会在方法体的最前面编写一段对入參进行检測的代码,例如以下所看到的:




public InputStream getData(String file) {

    if (file == null || file.length() == 0|| file.replaceAll("\\s", "").length() == 0) {


        throw new IllegalArgumentException("file入參不是有效的文件地址");

    }



}



类似以上检測方法入參的代码是很常见,可是在每一个方法中都使用手工编写检測逻辑的方式并非一个好主意。阅读 Spring 源代码,您会发现 Spring 採用一个 org.springframework.util.Assert 通用类完毕这一任务。

Assert 翻译为中文为“断言”,使用过 JUnit 的读者都熟知这个概念,它断定某一个实际的执行值和预期想一样,否则就抛出异常。

Spring 对方法入參的检測借用了这个概念,其提供的 Assert 类拥有众多按规则对方法入參进行断言的方法。能够满足大部分方法入參检測的要求。这些断言方法在入參不满足要求时就会抛出 IllegalArgumentException。以下,我们来认识一下 Assert 类中的经常使用断言方法:


Spring Assert的全部方法:

断言方法 说明

1. notNull(Object object) 

当 object 不为 null 时抛出异常,notNull(Object object, String message) 方法同意您通过 message 定制异常信息。

和 notNull() 方法断言规则相反的方法是 isNull(Object object)/isNull(Object object, String message),它要求入參一定是 null;




2. isTrue(boolean expression) / isTrue(boolean expression, String message) 


当 expression 不为 true 抛出异常;



3. notEmpty(Collection collection) / notEmpty(Collection collection, String message) 


当集合未包括元素时抛出异常。

notEmpty(Map map) / notEmpty(Map map, String message) 和 notEmpty(Object[] array, String message) / notEmpty(Object[] array, String message) 分别对 Map 和 Object[] 类型的入參进行推断;




4. hasLength(String text) / hasLength(String text, String message)

当 text 为 null 或长度为 0 时抛出异常;



5. hasText(String text) / hasText(String text, String message)

text 不能为 null 且必须至少包括一个非空格的字符。否则抛出异常。



6. isInstanceOf(Class clazz, Object obj) / isInstanceOf(Class type, Object obj, String message)

假设 obj 不能被正确造型为 clazz 指定的类将抛出异常。

7. isAssignable(Class superType, Class subType) / isAssignable(Class superType, Class subType, String message)

subType 必须能够按类型匹配于 superType。否则将抛出异常;



使用 Assert 断言类能够简化方法入參检測的代码。如 InputStream getData(String file) 在应用 Assert 断言类后。其代码能够简化为下面的形式:




public InputStream getData(String file){

    Assert.hasText(file,"file入參不是有效的文件地址");

    ① 采用 Spring 断言类的方法来检测参议院



}

版权声明:本文博主原创文章。博客,未经同意不得转载。

Spring Assert主张 (参议院检测工具的方法-主张)的更多相关文章

  1. Windows系统中内存泄露与检测工具及方法

    1.检测需要使用的工具:windbg工具.检测前,需要先安装windbg工具.安装了该工具后,会在安装目录下有一个umdh工具.假设windbg安装在以下目录下:D:\Program Files\De ...

  2. 关于spring中Assert的应用(方法入参检测工具类)

    关于spring中Assert的应用(方法入参检测工具类) Web 应用在接受表单提交的数据后都需要对其进行合法性检查,如果表单数据不合法,请求将被驳回.类似的,当我们在编写类的方法时,也常常需要对方 ...

  3. Spring Assert(方法入参检测工具类-断言)

    Web 应用在接受表单提交的数据后都需要对其进行合法性检查,如果表单数据不合法,请求将被驳回.类似的,当我们在编写类的方法时,也常常需要对方法入参进行合 法性检查,如果入参不符合要求,方法将通过抛出异 ...

  4. Linux后门入侵检测工具,附bash漏洞解决方法[转载]

    转自:http://blog.jobbole.com/77663/ 官网 ClamAV杀毒软件介绍 ClamAV是一个在命令行下查毒软件,因为它不将杀毒作为主要功能,默认只能查出您计算机内的病毒,但是 ...

  5. Linux后门入侵检测工具,附bash漏洞解决方法

    一.rootkit简介 rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现 ...

  6. Spring MVC模式下,获取WebApplicationContext的工具类 方法

    在已有的注解类型下,获取WebApplicationContext的工具类 通过  WebApplicationContextUtils.getRequiredWebApplicationContex ...

  7. Spring Assert 断言

    Assert(断言)的初步理解构思 Web 应用在接受表单提交的数据后都需要对其进行合法性检查,如果表单数据不合法,请求将被驳回.类似的,当我们在编写类的方法时,也常常需要对方法入参进行合 法性检查, ...

  8. C/C++的内存泄漏检测工具Valgrind memcheck的使用经历

    Linux下的Valgrind真是利器啊(不知道Valgrind的请自觉查看参考文献(1)(2)),帮我找出了不少C++中的内存管理错误,前一阵子还在纠结为什么VS 2013下运行良好的程序到了Lin ...

  9. LeakCanary内存泄漏检测工具使用步骤

    LeakCanary内存检测工具使用步骤: 第一步,进入app目录下的build.gradle,在最下面找到dependencies{},里面添加如下三行语句: debugCompile 'com.s ...

随机推荐

  1. 图像特征提取方法:Bag-of-words

    Bag-of-words简单介绍 最初的Bag-of-words ,也叫做"词袋",在信息检索中,Bag-of-words model假定对于一个文本,忽略其词序和语法,句法,将其 ...

  2. SaaS怎样改变了商务世界

    当下,全球的经济环境愈发复杂,竞争日益激烈,这就要求企业负责人高速适应和调整战略应对挑战.假设你的企业可以优化内部操作流程,走在新技术的前沿,你就行减少成本.改善服务质量.没有及时应对的企业非常快就会 ...

  3. GridView的RowDataBound事件中获取当前行内容的几种方法

    1. Cells[x].Txt.    从列单元格的文本值获取.这种方法简单高率,最为常用,但是功能单纯.此法存在几个缺点:   (1)无法获取到设置了隐藏属性的数据列的值,所取到的值为“”(空).  ...

  4. jdk1.6与1.7垃圾回收

    最近项目中遇到了个关于JVM中GC线程数的问题,做一下简单的总结 问题场景: server:均为 sun公司的solaris 系统 CPU 128个 项目8.1时使用的 java版本:   jdk1. ...

  5. Android SDK r23

    SDK Tools Only Platform Package Size MD5 Checksum Windows 32 & 64-bit android-sdk_r23-windows.zi ...

  6. POJ2155:Matrix(二维树状数组,经典)

    Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the ...

  7. 京东商城招聘匹配系统资深工程师 T4级别

    岗位级别:T4 岗位职责: 1.负责匹配系统的架构设计 2.负责网页抽取.实体识别.匹配等算法设计 3.核心代码编写,代码review 任职要求: 1.熟悉机器学习.自然语言处理理论和算法2.三年以上 ...

  8. MySQL 触发器结构及三个案例demo

    --你必须拥有相当大的权限才能创建触发器(CREATE TRIGGER),如果你已经是Root用户,那么就足够了.这跟SQL的标准有所不同. CREATE TRIGGER语法 CREATE TRIGG ...

  9. surfaceflinger中各个layer的排序

    surfaceflinger的主要工作就是负责把上层传递下来的各个不同的layer进行composition. 这里,我们来讨论一下各个layer在surfaceflinger中的上下排序关系和相关的 ...

  10. Mysql经常使用命令

    1.导出整个数据库 mysqldump -u username -p --default-character-set=latin1 数据库名 > 导出的文件名称(数据库默认编码是latin1) ...