文档章节

Spring中Assert工具类的用法

mifans
 mifans
发布于 2017/04/05 18:30
字数 568
阅读 33
收藏 0
点赞 0
评论 0

spring在提供一个强大的应用开发框架的同时也提供了很多优秀的开发工具类,合理的运用这些工具,将有助于提高开发效率、增强代码质量。下面就最常用的Assert工具类,简要介绍一下它的用法。
Assert断言工具类,通常用于数据合法性检查,在Java编程中,通常会编写如下代码:  

if (name == null || name.equls("")) {  
    throw new IllegalArgumentException("参数错误!");  
}   
     
在所有方法中都使用手工检测合法性的方式并不是太好,因为这样影响了代码的可读性,若使用Assert工具类上面的代码可以简化为:  
  
Assert.hasText((name, "参数错误!");

这样可以大大增强代码的可读性,下面我们来介绍一下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 断言类进行方法入参检测 
… 
}

本文转载自:http://blog.csdn.net/haschwalth/article/details/50763947

共有 人打赏支持
mifans
粉丝 9
博文 202
码字总数 102200
作品 0
海淀
程序员
Spring 的优秀工具类(2):特殊字符转义和方法入参检测工具类

特殊字符转义 由于 Web 应用程序需要联合使用到多种语言,每种语言都包含一些特殊的字符,对于动态语言或标签式的语言而言,如果需要动态构造语言的内容时,一个我们经常会碰到的问题就是特殊...

采女孩的小蘑菇1
2014/03/31
0
1
java 中的断言assert的使用

一、assertion的意义和用法 J2SE 1.4在语言上提供了一个新特性,就是assertion功能,它是该版本在Java语言方面最大的革新。 从理论上来说,通过 assertion方式可以证明程序的正确性,但是这是...

随智阔
2014/03/26
0
0
StringEscapeUtils类的转义与反转义方法

org.apache.commons.lang.StringEscapeUtils 类可以对js sql html xml等代码进行转义!用来处理前端js注入代码 SQL特殊字符转义   应该说,您即使没有处理 HTML 或 JavaScript 的特殊字符,...

牛闯
2013/12/17
0
0
java unitils的@SpringApplicationContext的用法

用maven构建的一个项目,使用的是SpringMVC结构,bean类配置在项目的WEB-INF/spring-servlet.xml中。 现在需要使用unitils来做测试,按照网上的例子,写了一个Junit4的测试类。 代码如下: ...

雷超林
2013/10/28
1K
4
Spring3.0.5jar包用法详解

Spring3.X以后jar包进行了重构,取消了原来2.X版本中的总的spring.jar包,而是把总包中的功能全部分开打包。正在向osgi靠拢。 各个jar包详解如下: 1. org.springframework.aop 包含在应用中...

sfilyh
2012/03/30
0
0
Spring Boot - 单元测试(Junit4&Mockito)

回顾 Spring Boot - 初识 Hello World Spring Boot - Servlet、过滤器、监听器、拦截器 Spring Boot - 静态资源处理、启动加载、日志处理 Spring Boot - 部署Deploy Spring Boot - 整合jsp后...

刘忠旭
2017/10/10
0
0
Spring AOP类中方法调用自身其他方法的解决方案

由来 例如这个类: 方法需要调用类中的方法,问题是进行了AOP拦截,在类中直接调用方法,将不会经过AOP拦截 工具类 写了一个工具类来解决自己调用自己的问题: 上面的代码这样改: 获得代理对...

大大枣
01/22
0
0
tanghc/fastmybatis

fastmybatis fastmybatis是一个mybatis开发框架,目的为简化mybatis的开发,让开发更高效。 零配置快速上手 无需编写xml文件即可完成CRUD操作 支持mysql,sqlserver,oracle,postgresql,sq...

tanghc
06/20
0
0
Spring定时任务的几种实现

Spring定时任务的几种实现 近日项目开发中需要执行一些定时任务,比如需要在每天凌晨时候,分析一次前一天的日志信息,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,...

如月王子
2014/07/12
0
0
JAVA程序员面试题整理(较全面)

以下是在面试中可能会遇到的问题,话不多说,往下看 1、面向对象的特征有哪些方面? 2、访问修饰符public,private,protected,以及不写(默认)时的区别? 3、String 是最基本的数据类型吗? ...

编程大侠
04/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JupyterLab安装地图插件

JupyterLab安装地图插件 (本文所述软件还在发展之中,欢迎加入开源项目,提供建议、测试和开发。) 在Jupyter中进行数据分析时,往往需要将数据叠加到地图上。简单的可以利用matplotlib/ec...

openthings
7分钟前
0
0
Coding and Paper Letter(八)

资源整理 1 Coding: 1.Python项目,由Allen Downey撰写的Think Python第二版的LaTeX源代码和支持代码。 ThinkPython2 2.R语言包h3jsr,h3jsr使用V8的神奇力量通过其javascript绑定提供对Ube...

胖胖雕
16分钟前
0
0
skiplist跳跃表

插入删除log(N) TODO

梦想游戏人
17分钟前
1
0
利用世界杯,读懂 Python 装饰器

Python 装饰器是在面试过程高频被问到的问题,装饰器也是一个非常好用的特性, 熟练掌握装饰器会让你的编程思路更加宽广,程序也更加 pythonic。 今天就结合最近的世界杯带大家理解下装饰器。...

p柯西
31分钟前
0
0
Xshell登录阿里云服务器ECS

Xshell登录阿里云服务器ECS 1. 参考资料: 1). 《阿里云服务器怎么用?阿里云服务器使用教程》 链接:http://www.cr173.com/html/50758_1.html 2). eagle-zhang的CSDN博客《Xshell连接不上阿...

SuShine
40分钟前
1
0
IDEA中的HTTP Client Editor测试API

在前后端分离项目,前后端通过api进行通信。如果用postman免费版进行api测试的话,由于无法保存测试脚本到文件,不方便前端查看。 你可以选择付费版。也可以利用IDEA自带的HTTP Client Edito...

hutaishi
43分钟前
0
0
解决“只能通过Chrome网上应用商店安装该程序”的方法

摘要 : 最近有些用户反映某个Chrome插件在安装的时候,提示“只能通过Chrome网上应用商店安装该程序”,为了解决这一问题,Chrome插件网带来了相关的解决方法。 某些用户在Chrome插件网下载了...

沧海一刀
44分钟前
0
0
通过UNIX域套接字传递文件描述符

  传送文件描述符是高并发网络服务编程的一种常见实现方式。Nebula 高性能通用网络框架即采用了UNIX域套接字传递文件描述符设计和实现。本文详细说明一下传送文件描述符的应用。 1. TCP服务...

Bwar
47分钟前
0
0
python操作Excle

# -*- coding: utf-8 -*-from openpyxl import load_workbook, Workbook#index:第几个sheet页,第一个sheet页的index为0def readExcle(filename,index): # 加载excle文件 wb = l......

淺陌离殇
49分钟前
0
0
Apache爆日志文件漏洞

全球使用最广泛的Web服务器Apache近日被爆出了一个安全漏洞,该漏洞可能导致攻击者控制服务器。 该漏洞包含在mod_rewrite 模块中的do_rewritelog()日志函数中。由于该函数还无法完全过滤写入...

问题终结者
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部