Spring Shell

Introduction

Users of the Spring Shell project can easily build a full featured shell ( aka command line) application by depending on the Spring Shell jars and adding their own commands (which come as methods on spring beans). Creating a command line application can be useful e.g. to interact with your project’s REST API, or to work with local file content.
Features

Spring Shell’s features include

A simple, annotation driven, programming model to contribute custom commands
Use of Spring Boot auto-configuration functionality as the basis for a command plugin strategy
Tab completion, colorization, and script execution
Customization of command prompt, shell history file name, handling of results and errors
Dynamic enablement of commands based on domain specific criteria
Integration with the bean validation API
Already built-in commands, such as clear screen, gorgeous help, exit
ASCII art Tables, with formatting, alignment, fancy borders, etc.

Quick Start
Download
Maven
Gradle

The recommended way to get started using spring-shell in your project is with a dependency management system – the snippet below can be copied and pasted into your build. Need help? See our getting started guides on building with Maven and Gradle.

org.springframework.shell spring-shell-starter 2.0.1.BUILD-SNAPSHOT spring-snapshots Spring Snapshots https://repo.spring.io/libs-snapshot true

Then to create a simple command that could be invoked as

shell:>translate “hello world!” --from en_US --to fr_FR
bonjour monde!

assuming you’d have access to some kind of translation service that worked with Locales:

package foo;

@ShellComponent
public class TranslationCommands {

private final TranslationService service;

@Autowired
public TranslationCommands(TranslationService service) {
  this.service = service;
}

@ShellMethod("Translate text from one language to another.")
public String translate(
  @ShellOption(mandatory = true) String text,
  @ShellOption(mandatory = true, defaultValue = "en_US") Locale from,
  @ShellOption(mandatory = true) Locate to
) {
  // invoke service
  return service.translate(text, from, to);
}

}

发布了0 篇原创文章 · 获赞 0 · 访问量 958

猜你喜欢

转载自blog.csdn.net/blog_programb/article/details/104594043
今日推荐