Este repositório tem como objetivo guardar e documentar o conhecimento adquirido ao pesquisar mais sobre Spring Shell, inicialmente os conteúdos desse repositório serão apresentados nas reuniões de padrões internas do time no qual participo.
O Spring Shell permite que possamos criar comandos de uma maneira super simples e descomplicada, esses mesmos comandos podem ser chamados via linha de comando pelo terminal. Toda a configuração para que isso aconteça, é muito simples e orientada a anotações, para saber mais e criar seu projeto, siga os passos abaixo.
Para criar seu primeiro projeto utilizando Spring Shell, você pode criar um simples projeto via Spring Initializr ou utilizar algum projeto Spring já existente.
Com o projeto já criado, você deve acrescentar a dependência do Spring Shell em seu arquivo pom.xml
, lembre de conferir a versão mais recente do Spring Shell, para isso você pode conferir via Maven Repository Spring Shell Starter:
<dependency>
<groupId>org.springframework.shell</groupId>
<artifactId>spring-shell-starter</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
Feito isso, já podemos utilizar todas as anotações e códigos disponibilzados do Spring Shell, você pode rodar seu projeto e ao fim do processo de inicialização rodar o seguinte comando:
$ help
Como mostra a imagem abaixo:
Os comandos listados após rodar help
, são alguns comandos que vêm por padrão com o Spring Shell, logo você acaba de criar sua primeira aplicação utilizando Spring Shell 😁!!!
Com sua aplicação já criada, podemos dar inicio a criação de nosso primeiro comando costumizado, para isso vamos criar uma pasta chamada commands
e dentro da mesma criar uma classe java, chamada PokemonCommands
.
Feito isso, devemos adicionar nossas primeiras configurações por meio de anotações:
@ShellComponent
@ShellCommandGroup("Pokemon")
public class PokemonCommand {
//...
}
A anotação @ShellComponent
é necessária para referenciarmos que nossa classe representará um componente que conterá comandos Shell, já a anotação @ShellCommandGroup("Pokemon")
representará o nosso grupo de comandos Pokemon.
Feitas as configurações da classe, partimos para as configurações do nosso método, que representará um comando shell:
@ShellMethod("List pokemon")
public String listPokemon() {
return "Your Pokemon List is Empty :/";
}
A anotação @ShellMethod("List pokemon")
representara seu método shell que poderá ser executado, já a String passada na anotação representa a função do comando, já o comando em si, será formado pelo nome do método, no caso assima, o comando será list-pokemon
.
Feito isso, podemos rodar nossa aplicação e rodar novamente o comando help
para conferirmos nosso novo grupo e comando:
Com isso já podemos ver nosso grupo de comandos Pokemon
e nosso comando list-pokemon
, agora podemos rodar nosso comando list-pokemon
:
Com isso, criamos nosso primeiro comando com Spring Shell!!, agora você pode fazer seus testes e evoluir sua aplicação. Neste mesmo repositório, você pode conferir o projeto criado para criar esse passo a passo, o mesmo já está um pouco mais evoluido contendo 3 métodos shell onde para buscar os dados do mesmos é consumida a PokeApi.
Fiquei impressionado com o Spring Shell, pela sua simplicidade e ótima orientação a interfaces, em poucos minutos você pode adiciona-lo em seu projeto, sendo uma ótima opção para quem necessidade de uma solução que utilize comandos shell.