No meu post anterior “Introdução ao Spring Boot”, discutimos sobre os fundamentos do Spring Boot. Agora, vamos falar sobre “Quais são os principais componentes do Spring Boot” e “Como o Spring Boot funciona por baixo dos panos”.
Principais Componentes do Framework Spring Boot
O Framework Spring Boot possui principalmente quatro componentes principais.
- Starters do Spring Boot
- AutoConfigurator do Spring Boot
- CLI do Spring Boot
- Actuator do Spring Boot
OBSERVAÇÃO:- Além desses quatro componentes principais, existem mais dois componentes do Spring Boot:
- Initilizr do Spring
- IDEs do Spring Boot
Para iniciar rapidamente novos projetos Spring Boot, podemos usar a interface web do “Spring Initializr”. URL do Spring Initializr: https://start.spring.io. Temos várias IDEs do Spring Boot, como Eclipse IDE, IntelliJ IDEA, Spring STS Suite, etc. Discutiremos esses dois componentes nos próximos posts. Agora vamos discutir esses quatro componentes do Spring Boot detalhadamente, um por um.
Iniciador do Spring Boot
O Spring Boot Starters é uma das principais características ou componentes fundamentais do Framework Spring Boot. A principal responsabilidade do Iniciador do Spring Boot é combinar um grupo de dependências comuns ou relacionadas em dependências únicas. Vamos explorar esta afirmação detalhadamente com um exemplo. Por exemplo, gostaríamos de desenvolver uma aplicação web Spring com o servidor web Tomcat. Então, precisamos adicionar as seguintes dependências mínimas no arquivo pom.xml do Maven ou no arquivo build.gradle do Gradle
- Arquivo Jar do Spring Core (spring-core-xx.jar)
- Arquivo Jar do Spring Web (spring-web-xx.jar)
- Arquivo Jar do Spring Web MVC (spring-webmvc-xx.jar)
- Arquivo Jar do Servlet (servlet-xx.jar)
Se quisermos adicionar funcionalidades de banco de dados, então precisamos adicionar jars relacionados ao banco de dados, como o arquivo Jar do Spring JDBC, arquivos Jar do Spring ORM, arquivo Jar de Transações do Spring, etc.
- Arquivo Jar do Spring JDBC (spring-jdbc-xx.jar)
- Arquivo Jar do Spring ORM (spring-orm-xx.jar)
- Arquivo Jar de Transações do Spring (spring-transaction-xx.jar)
Precisamos definir muitas dependências em nossos arquivos de compilação. É uma tarefa tediosa e complicada para um desenvolvedor. Além disso, aumenta o tamanho dos nossos arquivos de compilação. Qual é a solução para evitar tantas definições de dependências em nossos arquivos de compilação? A solução é o componente Spring Boot Starter. O componente Spring Boot Starter combina todos os JARs relacionados em um único arquivo JAR, para que possamos adicionar apenas a dependência do arquivo JAR aos nossos arquivos de compilação. Em vez de adicionar os quatro arquivos JAR acima ao nosso arquivo de compilação, precisamos adicionar apenas um: o arquivo JAR “spring-boot-starter-web”. Quando adicionamos a dependência do arquivo JAR “spring-boot-starter-web” ao nosso arquivo de compilação, o Framework Spring Boot automaticamente baixará todos os JARs necessários e os adicionará ao classpath do nosso projeto. Da mesma forma, o arquivo JAR “spring-boot-starter-logging” carrega todos os seus JARs de dependência como “jcl-over-slf4j, jul-to-slf4j, log4j-over-slf4j, logback-classic” para o classpath do nosso projeto.
Principais vantagens do Spring Boot Starter
- O Spring Boot Starter reduz a definição de muitas dependências simplificando as dependências de compilação do projeto.
- O Spring Boot Starter simplifica as dependências de compilação do projeto.
É isso sobre o componente Spring Boot Starter. Discutiremos mais detalhes com alguns exemplos do Spring Boot em postagens futuras.
AutoConfigurador do Spring Boot
Outro componente-chave importante do Framework Spring Boot é o Spring Boot AutoConfigurator. A maioria das opiniões dos críticos da Plataforma Spring IO (Spring Framework) é que “Desenvolver uma aplicação baseada em Spring requer muita configuração (seja configuração XML ou configuração por anotações). Então, como resolver esse problema? A solução para esse problema é o Spring Boot AutoConfigurator. A principal responsabilidade do Spring Boot AutoConfigurator é reduzir a configuração do Spring. Se desenvolvermos aplicações Spring no Spring Boot, então não precisamos definir uma única configuração XML e quase nenhuma ou mínima configuração por anotações. O componente Spring Boot AutoConfigurator cuidará de fornecer essas informações. Por exemplo, se quisermos declarar uma aplicação Spring MVC usando a Plataforma Spring IO, então precisamos definir muita configuração XML como visões, resolvedores de visão etc. Mas se usarmos o Framework Spring Boot, então não precisamos definir essa configuração XML. O Spring Boot AutoConfigurator cuidará disso. Se usarmos o arquivo jar “spring-boot-starter-web” em nosso arquivo de construção do projeto, então o Spring Boot AutoConfigurator resolverá visões, resolvedores de visão etc. automaticamente. E também o Spring Boot reduz a definição da configuração por anotações. Se usarmos a anotação @SpringBootApplication no nível da classe, então o Spring Boot AutoConfigurator adicionará automaticamente todas as anotações necessárias ao ByteCode da Classe Java. Se consultarmos a Documentação do Spring Boot, podemos encontrar a seguinte definição para a anotação @SpringBootApplication.
@Target(value=TYPE)
@Retention(value=RUNTIME)
@Documented
@Inherited
@Configuration
@EnableAutoConfiguration
@ComponentScan
public @interface SpringBootApplication
Isso é, @SpringBootApplication = @Configuration + @ComponentScan + @EnableAutoConfiration. Isso é sobre o componente de AutoConfiguração do Spring Boot. Discutiremos mais alguns detalhes com alguns exemplos do Spring Boot em postagens futuras. NOTA:-
- Em palavras simples, o Spring Boot Starter reduz as dependências de compilação e o Spring Boot AutoConfigurator reduz a Configuração do Spring.
- Como discutimos que o Spring Boot Starter tem uma dependência do Spring Boot AutoConfigurator, o Spring Boot Starter aciona o Spring Boot AutoConfigurator automaticamente.
Spring Boot CLI
O Spring Boot CLI (Interface de Linha de Comando) é um software do Spring Boot para executar e testar aplicações do Spring Boot a partir do prompt de comando. Quando executamos aplicações do Spring Boot usando o CLI, então internamente ele usa os componentes Spring Boot Starter e Spring Boot AutoConfigurate para resolver todas as dependências e executar a aplicação. Podemos até mesmo executar Aplicações Web do Spring com simples Comandos do Spring Boot CLI. O Spring Boot CLI introduziu um novo comando “spring” para executar Scripts Groovy a partir do prompt de comando. Exemplo de comando spring:
spring run HelloWorld.groovy
Aqui HelloWorld.groovy é um arquivo de script Groovy. Assim como os nomes dos arquivos de origem Java têm a extensão *.java, os arquivos de script Groovy têm a extensão *.groovy. O comando “spring” executa HelloWorld.groovy e produz a saída. O componente Spring Boot CLI requer muitas etapas, como a instalação do CLI, a configuração do CLI, o desenvolvimento de um aplicativo Spring Boot simples e o teste. Portanto, vamos dedicar outro post para discutir isso em detalhes com alguns exemplos do Spring Boot. Consulte meu próximo post sobre o Spring Boot CLI.
Spring Boot Actuator
Os componentes do Spring Boot Actuator oferecem muitos recursos, mas dois recursos principais são
- Fornecer EndPoints de Gerenciamento para Aplicativos Spring Boot.
- Métricas de Aplicativos Spring Boot.
Quando executamos nosso aplicativo da Web Spring Boot usando o CLI, o Spring Boot Actuator fornece automaticamente o nome do host como “localhost” e o número da porta padrão como “8080”. Podemos acessar este aplicativo usando o endereço “https://localhost:8080/”. Na verdade, usamos métodos de solicitação HTTP como GET e POST para representar os EndPoints de Gerenciamento usando o Spring Boot Actuator. Discutiremos mais detalhes sobre o Spring Boot Actuator nos próximos posts.
Internos do Framework Spring Boot
É sempre recomendado entender como o Framework Spring Boot reduz as dependências na construção, a Configuração do Spring, etc. Como o Spring Boot funciona nos bastidores. Se você está familiarizado com a linguagem de programação Groovy, então você conhece a maior parte do conteúdo. Em Groovy, não precisamos adicionar algumas importações e não é necessário incluir algumas dependências no projeto Groovy. Quando compilamos scripts Groovy usando o Compilador Groovy (groovyc), ele adiciona automaticamente todas as instruções de importação padrão e então compila. Da mesma forma, a linguagem de programação Groovy contém um resolvedor de dependências JAR para resolver e adicionar todos os arquivos JAR necessários ao classpath do projeto Groovy. Internamente, o Framework Spring Boot usa o Groovy para adicionar algumas configurações padrão, como instruções de importação padrão, método principal da aplicação, etc. Quando executamos scripts Groovy a partir do prompt de comando CLI, ele usa este método principal para executar a aplicação Spring Boot.
Grape
Grape é um mecanismo de Resolução de Dependências Incorporado. Grape é um Gerenciador de Dependências JAR incorporado ao Groovy. Grape nos permite adicionar rapidamente dependências de repositórios Maven ao classpath de nosso projeto para reduzir definições de arquivos de construção. O modelo de programação do Framework Spring Boot é principalmente inspirado no modelo de programação do Groovy. O Framework Spring Boot depende internamente desses dois principais componentes: Groovy e Grape. Você pode consultar a documentação do Grape em https://docs.groovy-lang.org/latest/html/documentation/grape.html para obter mais detalhes. É isso sobre os Componentes e Internos do Spring. Vamos discutir sobre esses componentes em detalhes com alguns exemplos do Spring Boot em próximas postagens. Se você tiver alguma dúvida, por favor me deixe um comentário.