SpringShell 支持使声明式注解校验参数, 使用声明式注解校验之后, 不仅在执行命令时会对参数进行合法性校验, 而且在查看参数的帮助信息时, 也会输出参数的约束条件.
1. 常用约束注解
SpringShell 应用可用的注解位于javax.validation.constraints 下
注解 | 描述 |
---|---|
@DecimalMax | 修饰浮点型, 限制浮点数最大值 |
@DecimalMin | 修饰浮点型, 限制浮点数最小值 |
@Digits | 修饰字符串, 限制字符串为纯数字 |
@Max | 修饰整数, 限制最大值 |
@Min | 修饰整数, 限制最小值 |
@Negative | 修饰数字, 限制必须为负数 |
@NegativeOrZero | 修饰数字, 限制必须为负数或0 |
@Positive | 修饰数字, 限制必须为正数 |
@PositiveOrZero | 修饰数字, 限制必须为正数或0 |
@NotEmpty | 修饰Object, 不能为空 |
@Size | 修饰字符串, 限定字符串长度范围 |
@Pattern | 正则匹配字符串 |
修饰字符串, 限定字符串为邮箱格式 |
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