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. HDU1385 【输出字典序最小的最短路】

    这题经过的结点比较好处理. 主要是字典序的处理. 先是floyd做法,采用记录后驱的方法.  path[i][j]=j[初始化...] #include <iostream> #inclu ...

  2. CentOS 6.5安装Erlang/OTP 17.0

    CentOS 6.5安装Erlang/OTP 17.0 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Erlang眼下已经是Fedora和Debian/ ...

  3. Linux Shell 函数返回值

    Shell函数返回值,常用的两种方式:return,echo 1) return 语句 shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回. 示例: #!/bin/sh fu ...

  4. WOJ 1055

    #include<stdio.h> #include<stdlib.h> #include<string.h> int main() { char s[6]={0} ...

  5. cisco路由器IPSEC VPN配置(隧道模式)

    拓扑如下: R1配置hostname R1enable password cisco  crypto isakmp policy 1        #创建IKE协商策略,编号为1 encr 3des  ...

  6. android视频库Vitamio

    之前尝试自己解码视频,然后播放显示,虽然音视频都可以播放,但是实现不了音视频的同步,所以使用第三方的视频库Vitamio来实现视频播放器功能,这样自己只需要实现播放解码的制作不不要关心底层解码和显示问 ...

  7. 分享3一个博客HTML5模板

    1.材类别:半透明 博客html模板 个人博客 半透明html5博客主题,半透明,博客,博客html模板,个人博客,html5,灰色,半透明html5博客主题是一款适合用于个人博客主题,风格非常不错. ...

  8. hdu1069(dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 分析: 每种石头有六种方法,那么等效为:有6*n种石头. 根据x和y排序(要保证相应的x.y总有 ...

  9. HttpAsyncClient 做并发长连接的一个实例

    HttpAsyncClient 做并发长连接的一个实例 import java.util.concurrent.CountDownLatch; import org.apache.http.HttpR ...

  10. hdu4115 Eliminate the Conflict

    Eliminate the Conflict Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...