当前位置: 首页 > 工具软件 > Spring Shell > 使用案例 >

04.SpringShell参数校验

翟源
2023-12-01

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
 类似资料: