目录
前言一、引入 Maven 依赖二、创建命令类1. 命令类2. 说明
三、进击1. 禁止自动进入到 shell 模式.2. 自定义命令3. 命令参数2.1 使用命令参数2.2 自定义命令参数2.3 验证命令参数
4. 查询命令
参考
前言
Spring-Shell 基于 JLine 库提供了提供了 REPL 模式的控制台交互工具,我们可以通过自定义命令实现控制台交互。
一、引入 Maven 依赖
<dependency>
<groupId>org.springframework.shell
</groupId>
<artifactId>spring-shell-starter
</artifactId>
<version>2.0.0.RELEASE
</version>
</dependency>
二、创建命令类
1. 命令类
@ShellComponent("cmdShell")
public class Shell {
@Resource
private AnchorExecutor anchorExecutor
;
private DeviceDb db
= DeviceDb
.getInstance();
@ShellMethod("stop rtls")
public void stopRtls() {
anchorExecutor
.stopRtls();
}
}
2. 说明
@ShellComponent Shell 类注解@ShellMethod 命令方法注解,默认情况下方法名将被用来作为命令名称。驼峰式命名转换为横线连接的名称。例如 stopRtls() 对应的命令为: stop-rtls,在控制台输入 stop-rtls 会执行 stopRtls() 方法。
三、进击
1. 禁止自动进入到 shell 模式.
spring.shell.interactive.enabled: false
2. 自定义命令
设定命令名:命令名被设定为 stop
@ShellMethod("stop rtls", key
="stop")
设定命令的别名 : 可以通过 stop 或 sr 来执行命令
@ShellMethod("stop rtls", key
="{stop, sr}")
3. 命令参数
2.1 使用命令参数
参数名,通过 --
命令名 --参数名 1 参数值 1 --参数名 2 参数值 2
...
直接传参,并按参数出现的顺序来调用命令。
参数名 参数值 1 参数值 2
2.2 自定义命令参数
@ShellOption 注解可以自定义调用参数名、参数默认值、多参数。
使用示例:
@ShellMethod("Say hello.")
public String
sayHello(@ShellOption(value
="a", defaultValue
="World") String who
) {
return "Hello " + who
;
}
value 属性指定参数调用名defaultValue 属性设定参数默认值arity 属性接收一个数组
2.3 验证命令参数
Spring shell 集成了 Bean Validation API,支持参数校验。
@ShellMethod("Change password.")
public String
changePassword(@Size(min
= 8,max
= 40)String password
) {
return "Password: " + password
;
}
4. 查询命令
当输入 help 命令时,会看到系统所支持的命令信息。
参考
https://blog.csdn.net/Revivedsun/article/details/99503088