Spring Shell


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.


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:

dependencies {
    compile ''

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;

public class TranslationCommands {

    private final TranslationService service;

    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.


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.1.RELEASE CURRENT GA Reference Doc. API Doc.
2.1.0-SNAPSHOT SNAPSHOT Reference Doc. API Doc.
2.1.0-M3 PRE Reference Doc. API Doc.