阅读 Spring 源码,您会发现 Spring 采用一个 org.springframework.util.Assert 通用类完成这一任务。
Assert 译为中文为“断言”,使用过 JUnit 的读者都熟知这个概念,它断定某一个实际的运行值和预期想一样,否则就抛出异常。Spring 对方法入参的检测借用了这个概念,其提供的 Assert 类拥有众多按规则对方法入参进行断言的方法,可以满足大部分方法入参检测的要求。这些断言方法在入参不满足要求时就会抛出 IllegalArgumentException。下面,我们来认识一下 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,否则将抛出异常;
分享到:
相关推荐
在IT行业中,异常处理是系统稳定性和健壮性的重要组成部分,尤其是在使用Spring Boot进行Web开发时。本项目“业务异常提示处理 springboot+Assert(自定义断言)”着重于利用Spring Boot的特性来构建高效、易维护的...
本文将探讨两种在Spring Boot中实现Controller间调用的方法及其优缺点。 首先,我们可以使用`RestTemplate`来模拟远程调用。这是一种常见的HTTP客户端工具,允许Controller A通过HTTP请求访问Controller B。以下是...
TestNG和Spring是两个在Java开发中非常重要的框架。TestNG是一个强大的测试框架,它提供了比JUnit更丰富的功能,如并行测试、测试套件、报告等,而Spring则是一个全面的企业级应用框架,用于简化Java开发,特别是...
在Spring框架中进行集成测试是确保应用程序在各个组件协同工作时仍能正常运行的重要步骤。集成测试关注的是系统中各个组件间的交互,而非单一组件的功能。以下是对在Spring中进行集成测试的详细讲解: 首先,集成...
在这个名为“springDataJpa测试demo”的项目中,我们看到它是一个基于Maven构建的工程,目的是演示如何在Spring应用中集成并测试Spring Data JPA的功能。这里我们将详细探讨Spring Data JPA以及与Maven和MySQL数据库...
【标题】"mybatis+spring+springtest" 涉及到的是在Java开发中集成MyBatis、Spring以及Spring Test框架的知识点。这个标题暗示了我们正在讨论如何在项目中整合这三个强大的工具来实现数据访问层(DAO)的自动化测试...
import junit.framework.Assert; import org.jboss.vfs.VFS; import org.jboss.vfs.VirtualFile; import org.jboss.vfs.spi.RealFileSystem; import org.junit.Test; import org.springframework.core.io.Resource;...
在Spring Data JPA项目中,Spring Test结合`@DataJpaTest`和`@AutoConfigureTestDatabase`可以方便地进行数据库相关的集成测试。`@DataJpaTest`会自动配置JPA测试环境,而`@AutoConfigureTestDatabase`则允许我们...
在上述代码中,`@SpringBootTest`注解表明这是一个Spring Boot的集成测试,`userService`通过`@Autowired`自动注入,然后在测试方法中执行查找用户的操作。 总的来说,Spring4提供了丰富的测试支持,结合JUnit能够...
### Spring Boot中的单元测试 #### 一、引言 单元测试是软件开发过程中不可或缺的一部分,它有助于确保代码的正确性和可维护性。Spring Boot作为一款流行的微服务开发框架,不仅简化了开发流程,还提供了丰富的...
本篇文章将深入探讨如何在Spring项目中集成TestNG和Mockito进行单元测试。 TestNG是一个强大的测试框架,它扩展了JUnit的功能,提供了更灵活的测试配置,如并发测试、更丰富的注解、更详尽的测试报告等。首先,你...
本文将深入探讨如何在Spring项目中整合Redis,以及在测试过程中如何使用JUnit进行单元测试。 1. **Spring Data Redis** Spring Data Redis是Spring Framework的一个模块,它提供了对Redis数据库的抽象层,使得...
Spring框架是Java开发中不可或缺的一部分,它以其强大的依赖注入(DI)和面向切面编程(AOP)功能闻名。在IntelliJ IDEA这个强大的集成开发环境中配置Spring框架,可以帮助开发者更高效地工作。本教程将指导您从零...
在本教程中,我们将深入探讨如何安装MySQL 8.0.11数据库并集成到Spring项目中。MySQL 8.0.11是MySQL数据库的一个重要版本,它提供了许多性能改进和新特性,如增强的SQL语法、更好的安全性和更高的可用性。Spring框架...
Spring框架是Java应用程序开发中的一个核心工具,它提供了一个全面的编程和配置模型,促进了松散耦合、可测试和模块化的应用设计。在本压缩包"Spring框架测试.zip"中,包含的是用于进行Spring框架单元测试的重要组件...
总结来说,Spring Data Elasticsearch 是一个强大的工具,它使得在 Spring 应用程序中使用 Elasticsearch 变得简单而直观。通过定义实体类、创建 Repository 接口以及利用注解,你可以轻松地完成数据的存储、检索、...
- 在`struts.properties`文件中设置`struts.objectFactory=spring`,或者在`struts.xml`中使用常量配置的方式:<constant name="struts.objectFactory" value="spring"/> 2. **配置Spring监听器** - 在`web.xml`...
在测试环境中,我们可以使用 Spring Test 进行单元测试,验证 Redis 的存取功能是否正常工作。例如: ```java import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory...
在本文中,我们将深入探讨如何将Spring框架与JUnit测试框架整合,以便进行高效且自动化的单元测试。Spring作为Java企业级应用开发的主流框架,提供了丰富的功能,包括依赖注入、AOP(面向切面编程)等,而JUnit则是...