close

Spring Shell

2.0.0.RELEASE

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.

Spring Boot Config

Start your Spring Shell application by adding the appropriate dependency:

Maven
<dependencies>
    <dependency>
        <groupId>org.springframework.shell</groupId>
        <artifactId>spring-shell-starter</artifactId>
        <version>2.0.0.RELEASE</version>
    </dependency>
</dependencies>
Gradle
dependencies {
    compile 'org.springframework.shell:spring-shell-starter:2.0.0.RELEASE'
}

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);
    }
}
Spring Initializr

Quickstart Your Project

Bootstrap your application with Spring Initializr.

Documentation

Each Spring project has its own; it explains in great details how you can use project features and what you can achieve with them.
2.0.0.RELEASE CURRENT GA Reference Doc. API Doc.
2.0.1.BUILD-SNAPSHOT SNAPSHOT Reference Doc. API Doc.