This version is still in development and is not considered stable yet. For the latest stable version, please use Spring Shell 3.4.0!

Annotation

@Command annotation when used on a method marks it as a candidate for command registration. In below example a command example is defined.

class Example {

	@Command(command = "example")
	public String example() {
		return "Hello";
	}
}

@Command annotation can be placed on a class which either defines defaults or shared settings for @Command methods defined in a same class. In below example a command parent example is defined.

@Command(command = "parent")
class Example {

	@Command(command = "example")
	public String example() {
		return "Hello";
	}
}

Using a @Command will not automatically register command targets, instead it is required to use @EnableCommand and/or @CommandScan annotations. This model is familiar from other parts of Spring umbrella and provides better flexibility for a user being inclusive rather than exclusive for command targets.

You can define target classes using @EnableCommand. It will get picked from all Configuration classes.

@EnableCommand(Example.class)
class App {
}

You can define target classes using @CommandScan. It will get picked from all Configuration classes.

Define @CommandScan in Spring Boot App class on a top level and it will automatically scan all command targets from all packages and classes under App.
@CommandScan
class App {
}