Spring Shell是spring的一个子项目,通过Spring Shell可以快速构建一个终端应用。并且可以通过@ShellComponent注解很方便地自定义终端命令。
这篇文章就介绍一下如何在项目中使用Spring Shel
第一步:创建项目
创建一个springboot项目springboot-springshell
第二步:添加依赖
修改springboot依赖版本,添加spring-shell-starter的依赖。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.9</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.edu.sgu.www</groupId>
<artifactId>springboot-springshell</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-springshell</name>
<description>Spring Boot整合Spring Shell</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.shell</groupId>
<artifactId>spring-shell-starter</artifactId>
<version>2.1.9</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
第三步:定义命令
使用@ShellComponent+@ShellMethod自定义命令。
1、无参数命令
package cn.edu.sgu.www.shell.command;
import org.springframework.shell.standard.ShellComponent;
import org.springframework.shell.standard.ShellMethod;
/**
* @author heyunlin
* @version 1.0
*/
@ShellComponent
public class Commands {
@ShellMethod("初始化项目环境。")
public String init() {
// todo
return "初始化项目环境完成...";
}
}
2、有参数的命令
package cn.edu.sgu.www.shell.command;
import org.springframework.shell.standard.ShellComponent;
import org.springframework.shell.standard.ShellMethod;
/**
* @author heyunlin
* @version 1.0
*/
@ShellComponent
public class Commands {
@ShellMethod("计算两个整数的和。")
public int add(int a, int b) {
return a + b;
}
}
3、设置参数选项
比如设置参数默认值
package cn.edu.sgu.www.shell.command;
import org.springframework.shell.standard.ShellComponent;
import org.springframework.shell.standard.ShellMethod;
import org.springframework.shell.standard.ShellOption;
/**
* @author heyunlin
* @version 1.0
*/
@ShellComponent
public class Commands {
@ShellMethod("打招呼:")
public String greet(@ShellOption(defaultValue = "沐雨橙风ιε") String name) {
return "Hello " + name;
}
}
4、设置参数校验
比如:设置参数最大值和最小值,可以使用Hibernate Validator的数据校验注解。
package cn.edu.sgu.www.shell.command;
import org.springframework.shell.standard.ShellComponent;
import org.springframework.shell.standard.ShellMethod;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
/**
* @author heyunlin
* @version 1.0
*/
@ShellComponent
public class Commands {
@ShellMethod("计算平方数。")
public int sqrt(@Min(value = 1) @Max(value = 99) int n) {
return n * n;
}
}
第四步:使用命令
启动项目,然后在控制台上就可以直接使用各种命令了,方法的参数直接在命令后面输入。
项目已经上传到git,可按需获取~
Spring Boot整合Spring Shell案例项目https://gitee.com/muyu-chengfeng/springboot-springshell.git