美文网首页
04.SpringShell参数校验

04.SpringShell参数校验

作者: Java扫地僧 | 来源:发表于2019-01-29 11:22 被阅读0次

SpringShell 支持使声明式注解校验参数, 使用声明式注解校验之后, 不仅在执行命令时会对参数进行合法性校验, 而且在查看参数的帮助信息时, 也会输出参数的约束条件.

1. 常用约束注解

SpringShell 应用可用的注解位于javax.validation.constraints 下

注解 描述
@DecimalMax 修饰浮点型, 限制浮点数最大值
@DecimalMin 修饰浮点型, 限制浮点数最小值
@Digits 修饰字符串, 限制字符串为纯数字
@Max 修饰整数, 限制最大值
@Min 修饰整数, 限制最小值
@Negative 修饰数字, 限制必须为负数
@NegativeOrZero 修饰数字, 限制必须为负数或0
@Positive 修饰数字, 限制必须为正数
@PositiveOrZero 修饰数字, 限制必须为正数或0
@NotEmpty 修饰Object, 不能为空
@Size 修饰字符串, 限定字符串长度范围
@Pattern 正则匹配字符串
@Email 修饰字符串, 限定字符串为邮箱格式

2. 校验注解测试

2.1 参数添加校验注解

@ShellMethod("connect to server ")
public String connect(
        @NotEmpty
        @Size(min = 8, max = 16) String host,
        @Min(10)
        @Max(10000) Integer port) {

    StringBuffer sb = new StringBuffer();
    sb.append("host:" + host);
    sb.append(",port:" + port);
    return sb.toString();
}

2.2 查看命令帮助信息

查看命名帮助信息时, 会输出自定义的约束信息

shell:>help connect
NAME
    connect - connect to server
SYNOPSYS
    connect [--host] string  [--port] integer
OPTIONS
    --host  string
        [Mandatory]
        [不能为空]
        [个数必须在8和16之间]
    --port  integer
        [Mandatory]
        [最大不能超过10000]
        [最小不能小于10]

2.3 错误参数测试

参数不符合限制时, 输出错误提示, 但是stacktrace 中并不保存错误信息.

shell:>connect 127.0.0.1 1
The following constraints were not met:
    --port integer : 最小不能小于10 (You passed '1')

2.4 正确参数测试

shell:>connect 127.0.0.1  8080
host:127.0.0.1,port:8080

相关文章

网友评论

      本文标题:04.SpringShell参数校验

      本文链接:https://www.haomeiwen.com/subject/fdtxsqtx.html