Spring的Assert断言使用

本文详细介绍了Spring框架中Assert工具类的各种断言方法及其使用场景。包括但不限于notNull、isTrue、notEmpty、hasLength及hasText等方法,并对每种方法进行了具体的解释和示例演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现象:
Spring的Assert断言使用

org.springframework.util.Assert断言工具类

方法:
1:notNull(:)
 notNull(Object object, String 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)
  当集合未包含元素时抛出异常。
这里写图片描述
结果:
这里写图片描述

4:hasLength(String text) / hasLength(String text, String message)
  当 text 为 null 或长度为 0 时抛出异常;
 这里写图片描述
 结果:
 这里写图片描述
5: hasText(String text) / hasText(String text, String message)
  text 不能为 null 且必须至少包含一个非空格的字符,否则抛出异常;
这里写图片描述
结果:
这里写图片描述

代码:

    /**
     * Spring Assert用法
     */
    public static void Assert(){
//      String a=null;
        //判断a是不是null 为null则抛出异常
//      Assert.notNull(a,"a为null");

//      int b=1;
        //判断b等于1  不等于1就抛出异常; 
//      Assert.isTrue(b!=1,"b不等于1");

//      List<String> list=new ArrayList<String>();
        //当集合未包含元素时抛出异常。 
//      Assert.notEmpty(list,"list没有元素");

//      String string="";
        //当 string 为 null 或长度为 0 时抛出异常;
//      Assert.hasLength(string,"text为null或者空");

        String string="";
        //text 不能为 null 且必须至少包含一个非空格的字符,否则抛出异常;
        Assert.hasText(string,"string为null或者没有包含非空格字符");
    }

总结借鉴:
1. notNull(Object object)
  当 object 不为 null 时抛出异常,notNull(Object object, String message) 方法允许您通过 message 定制异常信息。和 notNull() 方法断言规则相反的方法是 isNull(Object object)/isNull(Object object, String message),它要求入参一定是 null;

  1. isTrue(boolean expression) / isTrue(boolean expression, String message)
      当 expression 不为 true 抛出异常;

  2. 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[] 类型的入参进行判断;

  3. hasLength(String text) / hasLength(String text, String message)
      当 text 为 null 或长度为 0 时抛出异常;

  4. hasText(String text) / hasText(String text, String message)
      text 不能为 null 且必须至少包含一个非空格的字符,否则抛出异常;

  5. isInstanceOf(Class clazz, Object obj) / isInstanceOf(Class type, Object obj, String message)
      如果 obj 不能被正确造型为 clazz 指定的类将抛出异常;

  6. isAssignable(Class superType, Class subType) / isAssignable(Class superType, Class subType, String message)
      subType 必须可以按类型匹配于 superType,否则将抛出异常;

### 如何在API中实现和使用assert断言进行参数验证或状态检查 #### 封装带有`assert`断言的接口设计原则 对于API的设计而言,在函数内部加入必要的输入校验逻辑是提升程序健壮性的有效手段之一。当采用`assert`语句作为条件判断机制时,能够简洁明了地表达开发者意图——即所期望的前提条件必须成立;如果不满足,则立即终止当前流程并抛出异常[^4]。 ```java public class CalculatorService { /** * 加法运算服务. */ public int add(int a, int b){ // 对于加数a,b做简单范围限定(-100 <= a && a <= 100): "Parameter 'a' out of range!"; assert (-100 <= b && b <= 100): "Parameter 'b' out of range!"; return a + b; } } ``` 值得注意的是,默认情况下JVM并不会开启对`assert`的支持,因此还需要通过命令行选项 `-ea` 来激活它以便让这些声明生效[^3]。 #### 结合Spring框架下的断言工具类优化业务逻辑层 除了原生支持外,在某些特定场景下也可以考虑引入第三方库来增强功能特性。比如在基于Spring的应用里头,就存在一组非常实用的帮助器用于简化日常编码工作量的同时也提高了整体代码质量[^2]。 ```java import org.springframework.util.Assert; public class UserService { private final UserRepository userRepository; public User findUserById(Long id) { Assert.notNull(id, "'id' must not be null"); Optional<User> userOpt = userRepository.findById(id); return userOpt.orElseThrow(() -> new EntityNotFoundException("User with ID [" + id + "] does not exist")); } } ``` 上述例子展示了如何利用 `org.springframework.util.Assert` 类所提供的静态方法完成更为严格的前置约束定义过程,一旦违反则会触发相应的运行期错误提示信息给到调用方知晓具体原因所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值