04.SpringShell参数校验

版权声明:转载请注明出处! https://blog.csdn.net/zongf0504/article/details/86663667

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

猜你喜欢

转载自blog.csdn.net/zongf0504/article/details/86663667