# springShellDemo **Repository Path**: jackhb1999/spring-shell-demo ## Basic Information - **Project Name**: springShellDemo - **Description**: 试用 Spring Shell ,感觉以后使用 Java 写小工具可以借助框架,交互上用 shell 的方式。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-04-26 - **Last Updated**: 2023-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 说明 Spring Shell 是 spring 框架延申出来的一个工具性脚手架,方便我们构建 cli 交互。 对于用 java 开发一些工具,但又需要灵活的交互,又不想用 awt 等构建 GUI ,那么就可以考虑 cli 的交互方式,其中比较常用的工具集如:JLine,而Spring Shell 就是在 spring 框架的基础上对 JLine 进行了封装并提供了更方便的注解。 ## 使用 使用 Spring Shell 可以用 springBoot 快速集成开发。 Maven 依赖: ```xml org.springframework.shell spring-shell-starter org.springframework.boot spring-boot-starter-test test org.springframework.shell spring-shell-dependencies ${spring-shell.version} pom import ``` 写命令: ```java @ShellComponent public class OneCommands { @ShellMethod(value = "Add numbers.", key = "sum") public int add(int a,int b){ return a + b; } } ``` 其中 Spring Shell 还支持 help 等命令 ```java @ShellComponent @ShellCommandGroup("curl") public class CurlCommands { @Autowired Terminal terminal; @ShellMethod(value = "get请求.") public void curl(@ShellOption(value = {"--"}) String url) { 【省略网络请求部分】 // 使用 JLine 在终端输出内容 terminal.writer().println("StatusCode : " + httpStatus.value()); terminal.writer().println("StatusDescription : " + httpStatus.name()); terminal.writer().println("Content : "); terminal.writer().println(body); terminal.writer().flush(); } } ``` ## 其他 * 还玩一下 netty