spring-shell
Java 程序源
微信公众号: Java 程序源,敬请关注!
展开
-
00.SpringShell简介
预留一篇博客做总结原创 2019-08-27 16:23:16 · 281 阅读 · 0 评论 -
15.SpringShell源码分析-命令扫描与执行
上篇从源码分析了SpringShell的ApplicationRunner, 本文笔者从源码分析一下自定义命令的扫描和解析过程.1. 解析自定义命令1.1 注入Shell 组件SpringShell 会在SpringShellAutoConfiguration 配置类中使用@Bean 方式向Spring 容器中注入Shell 组件.// 源码:org.springframework.s...原创 2019-08-27 16:23:24 · 5630 阅读 · 0 评论 -
14.SpringShell源码分析-ApplicationRunner
SpringShell应用启动时, 会默认向IOC容器中注入两个ApplicationRunner: ScriptShellApplicationRunner 和 InteractiveShellApplicationRunner, 其中ScriptShellApplicationRunner 的优先级要高于InteractiveShellApplicationRunner.1. Appli...原创 2019-08-27 16:23:27 · 5618 阅读 · 0 评论 -
12.SpringShell后台执行脚本
SpringShell 运行脚本有两种方式, 一种是在交互式终端中使用script内置命令, 另外一种是在启动应用时直接将脚本作为参数传递.1. 创建命令脚本命令脚本也就是一组命令的集合, 将一组命令写入文件. 命令以换行符结束. 笔者创建脚本为: /tmp/zongf/scriptadd 2 3div 4 2# 命令过多长时, 可使用 \ 进行换行div \8 \22...原创 2019-08-27 16:23:35 · 5931 阅读 · 0 评论 -
11.SpringShell自定义启动信息
SpringShell 应用启动时, 默认会输出Spring Shell 的启动信息. 对于一个专业的shell来讲, 输出Spring相关的启动信息, 肯定是不合适的, 我们需要输出我们系统相关的信息.1. SpringShell 默认启动信息SpringShell 的启动信息一共包括三部分: SpringBoot banner, SpringBppt启动类日志, shell命令提示符....原创 2019-08-27 16:23:39 · 5615 阅读 · 0 评论 -
10.SpringShell自定义命令提示符
SpringShell 应用默认的命令提示符是 Shell:>, Spring 提供了PromptProvider 接口, 可以让我们轻松自定义自己的命令提示符. 这样会让我们的应用看起来更专业. 自定义命令提示符的方式也很简单, 只需自定义PromptProvider 实现类即可.1. 自定义命令提示符自定义命令提示符需要注册为spring的组件, 添加@Component修饰即...原创 2019-08-27 16:23:42 · 5693 阅读 · 0 评论 -
09.SpringShell内置命令-禁用内置命令
SpringShell 2.0 共为我们提供了五个内置命令, 如果不想使用, 那么可以禁用内置命令. 笔者并不推荐修改SpringSell内置命令的默认行为, 但是不妨了解一下.1. 禁用所有内置命令禁用所有内置命令, 可以直接修改maven依赖, 不引入内置命令的包即可. 需要注意的是, 这种方式连程序退出命令也会禁用, 只能通过杀进程方式停止应用.<dependency>...原创 2019-08-27 16:23:46 · 4306 阅读 · 0 评论 -
08.SpringShell内置命令-新增&重写内置命令
SpringShell 的内置命令隶属于"Built-In Commands"组内, 我们也可以将自定义命令添加到此组中, 也可以重写内置命令. 需要注意的时, 新增内置命令时, 新增命令不能与内置命令名称相同; 重写内置命令时, 名称和内置命令相同且需要实现内置命令.Command接口.1. 新增内置命令和普通命令开发基本无异, 只需将命令所属组设置为内置命令组"Built-In Com...原创 2019-08-27 16:23:49 · 4298 阅读 · 0 评论 -
07.SpringShell内置命令详解
SpringShell 除了允许我们自定义命令之外, 还提供了一些内置命令, 用于辅助我们操作. 笔者使用的是SpringShell 2.0版本, 内置命令只提供了五个:help, clear, stacktrace, script, exit/quite.1.help命令-查看帮助1.1 查看所有内置命令help 本身就是内置命令, 不跟参数的help命令会打印所有内置命令.shel...原创 2019-08-27 16:23:53 · 4227 阅读 · 0 评论 -
06.SpringShell命令分组-@ShellCommandGroup
当SpringShell应用中命令过多时, 我们就需要对命令进行归类分组. SpringShell 提供了四种分组方式.1. 命令分组方式1.1 命令级别分组声明命令时, 直接使用group属性指定命令所属组.@ShellMethod(value = "计算两个整数的除法", group = "calculator")public int div(int a, int b) { ...原创 2019-08-27 16:23:57 · 4252 阅读 · 0 评论 -
05.SpringShell命令限制可用-@ShellMethodAvailability
SpringShell声明的命令, 在默认情况下都是可用的. 但有时我们要实现命令依赖, 就是说要执行这条命令必须先执行依赖的命令, 就像ftp命令, 需要先使用open 命令连接到ftp服务器之后, 才能执行其它命令. SpringShell 中可借助于自定义命令是否可用方法的方式来实现命令依赖, 对此, SpringShell提供了三种方式来限制命令是否可用. 但无论哪种方式都需要提供一个判...原创 2019-08-27 16:24:01 · 4266 阅读 · 0 评论 -
04.SpringShell参数校验
SpringShell 支持使声明式注解校验参数, 使用声明式注解校验之后, 不仅在执行命令时会对参数进行合法性校验, 而且在查看参数的帮助信息时, 也会输出参数的约束条件.1. 常用约束注解SpringShell 应用可用的注解位于javax.validation.constraints 下注解描述@DecimalMax修饰浮点型, 限制浮点数最大值@Dec...原创 2019-08-27 16:24:04 · 4276 阅读 · 0 评论 -
03.SpringShell命令参数-@ShellOption
SpringShell 提供了@ShellOption注解用于指定参数的帮助信息, 或对特殊参数进行处理.1. 传参方式SpringShell 命令调用时, 有两种传参方式, 一种是位置参数, 一种是命名参数. 虽然说也可以混合使用, 但是笔者不建议混合使用.SpringShell 命令默认参数分隔符为多个空格, 如果要传入参数包含空格, 需要使用引号包裹.SpringShell 参...原创 2019-08-27 16:24:07 · 4908 阅读 · 0 评论 -
02.SpringShell自定义命令-@ShellMethod
@ShellMethod 用于声明一个方法为Shell 命令, 默认命令名称为方法名, 命令所属分组为方法所在类类名, 可以通过自定义属性来做调整. 默认情况下, SpringShell 会将方法名作为命令名, 当方法名为驼峰方式时, SpringShell会自动替换为用-分隔的命令. 比如说 connectOracle 方法会被定义为connect-oracle 命令.1. @ShellM...原创 2019-08-27 16:24:12 · 4704 阅读 · 0 评论 -
01.SpringShell环境搭建
Spring Shell 是用来开发类似于Linux Shell, Python Shell 等交互式终端应用的. 和传统的java web 应用不同, 用户和应用的交互方式不再是通过绚丽多彩的页面, 而是通过低调内涵的命令行窗口. Spring Shell 给开发者提供了一个开发Shell应用的架构, 自带了Tab补全, 颜色高亮显示等特性, 使开发者只用关注于自己的命令逻辑即可.1. S...原创 2019-08-27 16:23:11 · 4346 阅读 · 0 评论 -
13.SpringShell自定义Runner-后台运行单条命令
SpringShell 应用启动时, 会自动创建两个ApplicationRunner组件: ScriptShellApplicationRunner 和 InteractiveShellApplicationRunner, 其中ScriptShellApplicationRunner 用来支持启动直接运行脚本方式, InteractiveShellApplicationRunner 用来支持交...原创 2019-08-27 16:23:31 · 5679 阅读 · 0 评论