专业的JAVA编程教程与资源

网站首页 > java教程 正文

Spring Boot整合Spring Shell工具进行命令行应用开发?

temp10 2025-02-07 19:10:30 java教程 11 ℃ 0 评论

Spring Shell是一个基于Spring框架开发的命令行应用程序开发工具。它主要是为开发者提供了一组方便快捷的API工具,用来创建可扩展的命令行页面应用程序,下面我们就来详细的介绍一下在Spring Boot中如何使用这个工具来开发一个简单的命令行应用程序。

Spring Boot应用实现

首先需要在SpringBoot的POM依赖汇中添加Spring Shell的依赖配置,如下所示。

Spring Boot整合Spring Shell工具进行命令行应用开发?


    
        org.springframework.shell
        spring-shell-starter
        2.0.1.RELEASE
    

第二步,需要创建一个任务执行的Task的实体类包含描述以及所要执行的命令信息,如下所示。

public class Task {
    private String description;
    private boolean completed;

    public Task(String description) {
        this.description = description;
        this.completed = false;
    }

    public String getDescription() {
        return description;
    }

    public boolean isCompleted() {
        return completed;
    }

    public void setCompleted(boolean completed) {
        this.completed = completed;
    }

    @Override
    public String toString() {
        return (completed ? "[x] " : "[ ] ") + description;
    }
}

第三步、创建一个TaskService管理类来进行命令行任务的管理,如下所示。

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

public class TaskService {
    private final List tasks = new ArrayList<>();

    public void addTask(String description) {
        tasks.add(new Task(description));
    }

    public List listTasks() {
        return new ArrayList<>(tasks);
    }

    public void completeTask(int index) {
        if (index >= 0 && index < tasks.size()) {
            tasks.get(index).setCompleted(true);
        }
    }

    public void deleteTask(int index) {
        if (index >= 0 && index < tasks.size()) {
            tasks.remove(index);
        }
    }
}

第四步、创建命令类TaskCommands来定义Shell命令,如下所示。

import org.springframework.shell.standard.ShellComponent;
import org.springframework.shell.standard.ShellMethod;
import org.springframework.shell.standard.ShellOption;

import java.util.List;

@ShellComponent
public class TaskCommands {
    private final TaskService taskService;

    public TaskCommands(TaskService taskService) {
        this.taskService = taskService;
    }

    @ShellMethod("Add a new task.")
    public String addTask(@ShellOption String description) {
        taskService.addTask(description);
        return "Task added: " + description;
    }

    @ShellMethod("List all tasks.")
    public List listTasks() {
        List tasks = taskService.listTasks();
        List taskDescriptions = tasks.stream()
                                              .map(Task::toString)
                                              .toList();
        return taskDescriptions;
    }

    @ShellMethod("Complete a task by its index.")
    public String completeTask(@ShellOption int index) {
        taskService.completeTask(index);
        return "Task " + index + " marked as completed.";
    }

    @ShellMethod("Delete a task by its index.")
    public String deleteTask(@ShellOption int index) {
        taskService.deleteTask(index);
        return "Task " + index + " deleted.";
    }
}

使用注解 (@ShellComponent 和 @ShellMethod) 定义命令,并且每个命令可以对应一个方法,这些方法可以接收用户输入的参数,作为方法执行的参数来进行操作。

在启动类或者是在配置类中添加TaskService作为任务执行的Bean来注入到容器中如下所示。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class TaskManagerApplication {

    public static void main(String[] args) {
        SpringApplication.run(TaskManagerApplication.class, args);
    }

    @Bean
    public TaskService taskService() {
        return new TaskService();
    }
}

运行应用程序之后,我们就可以在命令行中输入如下的命令来管理需要执行的任务,如下所示。

添加任务:addTask "Read a book"
列出任务:listTasks
完成任务:completeTask 0
删除任务:deleteTask 0

以上就是一个基于Spring Shell的高级任务管理的应用程序的示例代码,在这个应用程序中展示了如何通过SpringShell来创建一个功能齐全的命令行应用程序,包含了添加、展示、完成执行、删除任务等操作。

当然在实际场景中我们还可以通过SpringShell工具来完成例如数据库管理工具的开发、DevOps自动化脚本的执行、文件系统的交互管理等操作。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表