Spring Shell 提供交互式的 Shell 可让你使用简单的基于 Spring 的编程模型来开发命令。
示例代码:
@Component public class HelloWorldCommands implements CommandMarker { // use any Spring annotations for Dependency Injection or other Spring // interfaces as required. // methods with @Cli annotations go here }
英文原文:https://projects.spring.io/spring-shell/ 目录 介绍 特性 快速开始 示例和相关项目 Spring Shell项目提供了一个交互式shell,允许您使用基于Spring的编程模型插入自己的自定义命令。 介绍 Spring Shell项目的用户可以通过依赖Spring Shell jar并添加他们自己的命令(作为spring bean上的方法)轻
Spring Shell Spring Shell 项目的用户可以通过依赖 Spring Shell jar 并添加他们自己的命令(作为 Spring bean 上的方法)轻松构建功能齐全的 shell(又称命令行)应用程序。创建命令行应用程序可能很有用,例如与项目的 REST API 交互或处理本地文件内容。 特征 Spring Shell 的功能包括 一个简单的、注释驱动的、用于贡献自定义命令
SpringShell 提供了@ShellOption注解用于指定参数的帮助信息, 或对特殊参数进行处理. 1. 传参方式 SpringShell 命令调用时, 有两种传参方式, 一种是位置参数, 一种是命名参数. 虽然说也可以混合使用, 但是笔者不建议混合使用. SpringShell 命令默认参数分隔符为多个空格, 如果要传入参数包含空格, 需要使用引号包裹. SpringShell 参数严格
上篇从源码分析了SpringShell的ApplicationRunner, 本文笔者从源码分析一下自定义命令的扫描和解析过程. 1. 解析自定义命令 1.1 注入Shell 组件 SpringShell 会在SpringShellAutoConfiguration 配置类中使用@Bean 方式向Spring 容器中注入Shell 组件. // 源码:org.springframework.she
spring shell 官方链接 Version 2.0.0.RELEASE 可以参考这篇文章的视频简介: spring shell Java命令行集成 What is Spring Shell? 不是所有的应用程序都需要一个花哨的 web 用户界面!有时,使用交互式终端与应用程序交互是完成工作的最合适方式。 Spring Shell 允许您轻松创建这样一个可运行的应用程序,用户将在其中输入文本
@ShellMethod 用于声明一个方法为Shell 命令, 默认命令名称为方法名, 命令所属分组为方法所在类类名, 可以通过自定义属性来做调整. 默认情况下, SpringShell 会将方法名作为命令名, 当方法名为驼峰方式时, SpringShell会自动替换为用-分隔的命令. 比如说 connectOracle 方法会被定义为connect-oracle 命令. 1. @ShellMet
00.SpringShell简介 01.SpringShell环境搭建 02.SpringShell自定义命令-@ShellMethod 03.SpringShell命令参数-@ShellOption 04.SpringShell参数校验 05.SpringShell命令限制可用-@ShellMethodAvailability 06.SpringShell命令分组-@ShellCommandGr
SpringShell 支持使声明式注解校验参数, 使用声明式注解校验之后, 不仅在执行命令时会对参数进行合法性校验, 而且在查看参数的帮助信息时, 也会输出参数的约束条件. 1. 常用约束注解 SpringShell 应用可用的注解位于javax.validation.constraints 下 注解 描述 @DecimalMax 修饰浮点型, 限制浮点数最大值 @DecimalMin 修饰浮点
SpringShell 2.0 共为我们提供了五个内置命令, 如果不想使用, 那么可以禁用内置命令. 笔者并不推荐修改SpringSell内置命令的默认行为, 但是不妨了解一下. 1. 禁用所有内置命令 禁用所有内置命令, 可以直接修改maven依赖, 不引入内置命令的包即可. 需要注意的是, 这种方式连程序退出命令也会禁用, 只能通过杀进程方式停止应用. <dependency> <gr
SpringShell 应用默认的命令提示符是 Shell:>, Spring 提供了PromptProvider 接口, 可以让我们轻松自定义自己的命令提示符. 这样会让我们的应用看起来更专业. 自定义命令提示符的方式也很简单, 只需自定义PromptProvider 实现类即可. 1. 自定义命令提示符 自定义命令提示符需要注册为spring的组件, 添加@Component修饰即可 自定义提
SpringShell 除了允许我们自定义命令之外, 还提供了一些内置命令, 用于辅助我们操作. 笔者使用的是SpringShell 2.0版本, 内置命令只提供了五个:help, clear, stacktrace, script, exit/quite. 1.help命令-查看帮助 1.1 查看所有内置命令 help 本身就是内置命令, 不跟参数的help命令会打印所有内置命令. shell:
当SpringShell应用中命令过多时, 我们就需要对命令进行归类分组. SpringShell 提供了四种分组方式. 1. 命令分组方式 1.1 命令级别分组 声明命令时, 直接使用group属性指定命令所属组. @ShellMethod(value = "计算两个整数的除法", group = "calculator") public int div(int a, int b) {
Spring Shell 是用来开发类似于Linux Shell, Python Shell 等交互式终端应用的. 和传统的java web 应用不同, 用户和应用的交互方式不再是通过绚丽多彩的页面, 而是通过低调内涵的命令行窗口. Spring Shell 给开发者提供了一个开发Shell应用的架构, 自带了Tab补全, 颜色高亮显示等特性, 使开发者只用关注于自己的命令逻辑即可. 1. Spr
SpringShell 应用启动时, 默认会输出Spring Shell 的启动信息. 对于一个专业的shell来讲, 输出Spring相关的启动信息, 肯定是不合适的, 我们需要输出我们系统相关的信息. 1. SpringShell 默认启动信息 SpringShell 的启动信息一共包括三部分: SpringBoot banner, SpringBppt启动类日志, shell命令提示符. #
背景 SpringBoot Shell基于JLine库实现了REPL(READ EVAL PRINT LOOP) 模式的命令行工具,给我们提供了方便的使用命令行的工具。 使用入门 通过https://start.spring.io/创建SpringBoot项目,并添加依赖。 <dependency> <groupId>org.springframework.shell</groupId>
SpringShell 运行脚本有两种方式, 一种是在交互式终端中使用script内置命令, 另外一种是在启动应用时直接将脚本作为参数传递. 1. 创建命令脚本 命令脚本也就是一组命令的集合, 将一组命令写入文件. 命令以换行符结束. 笔者创建脚本为: /tmp/zongf/script add 2 3 div 4 2 # 命令过多长时, 可使用 \ 进行换行 div \ 8 \ 2 2.
SpringShell应用启动时, 会默认向IOC容器中注入两个ApplicationRunner: ScriptShellApplicationRunner 和 InteractiveShellApplicationRunner, 其中ScriptShellApplicationRunner 的优先级要高于InteractiveShellApplicationRunner. 1. Applica