Introdução à Spring Boot CLI
1. Introdução
Spring Boot CLI é umcommand-line abstraction that allows us to easily run Spring micro-services expressed as Groovy scripts. Ele também fornece gerenciamento de dependência simplificado e aprimorado para esses serviços.
Este breve artigo dá uma olhada rápida emhow to configure Spring Boot CLI and execute simple terminal commands to run pre-configured micro-services.
Usaremos Spring Boot CLI 2.0.0.RELEASE para este artigo. A versão mais recente do Spring Boot CLI pode ser encontrada emMaven Central.
2. Configurando Spring Boot CLI
Uma das maneiras mais fáceis de configurar o Spring Boot CLI é usar o SDKMAN. As instruções de configuração e instalação do SDKMAN podem ser encontradashere.
Após instalar o SDKMAN, execute o seguinte comando para instalar e configurar automaticamente o Spring Boot CLI:
$ sdk install springboot
Para verificar a instalação, execute o comando:
$ spring --version
3. Comandos de terminal comuns
O Spring Boot CLI fornece vários comandos e recursos úteis prontos para uso. Um dos recursos mais úteis é o Spring Shell, que envolve comandos com o prefixospring necessário.
Parastart the embedded shell, executamos:
spring shell
A partir daqui, podemos inserir diretamente os comandos desejados sem antecipar a palavra-chavespring (já que agora estamos no Spring Shell).
Por exemplo, podemosdisplay the current version da CLI em execução digitando:
version
Um dos comandos mais importantes é dizer ao Spring Boot CLI para executar um script Groovy:
run [SCRIPT_NAME].groovy
O Spring Boot CLI inferirá automaticamente as dependências ou o fará com base nas anotações fornecidas corretamente. Depois disso, ele lançará um contêiner da Web e um aplicativo incorporados.
Vamos dar uma olhada em como usar o script Groovy com Spring Boot CLI!
4. Scripts Groovy essenciais
Groovy e Spring vêm juntos com Spring Boot CLI paraallow powerful, performant micro-services to be quickly scripted in single-file Groovy deployments.
O suporte para aplicativos com múltiplos scripts geralmente requer ferramentas de construção adicionais, comoMaven ouGradle.
A seguir, cobriremos alguns dos casos de uso mais comuns para Spring Boot CLI, reservando configurações mais complexas para outros artigos.
Para uma lista de todas as anotações do Groovy com suporte para Spring, verifique odocs oficial.
4.1. @Grab
A anotação@Grab e as cláusulasimport do Groovy Java permitemeasy dependency management and injection.
De fato, a maioria das anotações abstrai, simplifica e inclui automaticamente as instruções de importação necessárias. Isso nos permite gastar mais tempo pensando na arquitetura e na lógica subjacente dos serviços que queremos implantar.
Vamos dar uma olhada em como usar a anotação@Grab:
package org.test
@Grab("spring-boot-starter-actuator")
@RestController
class ExampleRestController{
//...
}
Como podemos ver,spring-boot-starter-actuator comes pre-configured allowing for succinct script deployment without requiring a customized application or environmental properties, XML, or other programmatic configuration, embora cada uma dessas coisas possa ser especificada quando necessário.
A lista completa de argumentos@Grab - cada um especificando uma biblioteca para baixar e importar - está disponívelhere.
4.2. @Controller, @RestController, e@EnableWebMvc
Para agilizar ainda mais a implantação, podemos alternativamenteutilize Spring Boot CLI’s provided “grab hints” to automatically infer correct dependencies to import.
Analisaremos alguns dos casos de uso mais comuns abaixo.
Por exemplo, podemos usar as anotações familiares@Controllere@Service paraquickly scaffold a standard MVC controller and service:
@RestController
class Example {
@Autowired
private MyService myService;
@GetMapping("/")
public String helloWorld() {
return myService.sayWorld();
}
}
@Service
class MyService {
public String sayWorld() {
return "World!";
}
}
O Spring Boot CLI suporta todas as configurações padrão do Spring Boot. Assim, podemos que nossos aplicativos Groovy acessem automaticamente recursos estáticos de seus locais padrão habituais.
4.3. @EnableWebSecurity
Paraadd Spring Boot Security options to our app, podemos usar a anotação@EnableWebSecurity, que será baixada automaticamente pelo Spring Boot CLI.
Abaixo, vamos abstrair parte deste processo usando a dependênciaspring-boot-starter-security, que aproveita a anotação@EnableWebSecurity nos bastidores:
package bael.security
@Grab("spring-boot-starter-security")
@RestController
class SampleController {
@RequestMapping("/")
public def example() {
[message: "Hello World!"]
}
}
Para mais detalhes sobre como proteger os recursos e lidar com a segurança, verifique odocumentation oficial.
4.4. @Test
Paraset up a simple JUnit test, podemos adicionar as anotações@Grab(‘junit') ou@Test:
package bael.test
@Grab('junit')
class Test {
//...
}
Isso nos permitirá executar testes JUnit facilmente.
4.5. DataSource eJdbcTemplate
As opções de dados persistentes podem ser especificadas incluindoDataSource ouJdbcTemplatewithout explicitly using the @Grab annotation:
package bael.data
@Grab('h2')
@Configuration
@EnableWebMvc
@ComponentScan('bael.data')
class DataConfig {
@Bean
DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2).build();
}
}
By simply using familiar Spring bean configuration conventions, pegamos o banco de dados H2 incorporado e o configuramos comoDataSource.
5. Configuração Personalizada
Há duas maneiras principais de configurar um micro-serviço Spring Boot usando o Spring Boot CLI:
-
podemos adicionar parâmetros de argumento aos nossos comandos de terminal
-
podemos usar um arquivo YAML personalizado para fornecer uma configuração de aplicativo
Spring Boot irá procurar automaticamente o diretório/config porapplication.yml ouapplication.properties
├── app
├── app.groovy
├── config
├── application.yml
...
Também podemos configurar:
├── app
├── example.groovy
├── example.yml
...
Uma lista completa de propriedades do aplicativo pode ser encontradahere no Spring.
6. Conclusão
Isso conclui nossa rápida explicação sobre o Spring Boot CLI! Para mais detalhes, verifique odocs oficial.
E, como de costume, o código-fonte deste artigo pode ser encontradoover on GitHub.