# 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