Skip to main content
computador com códigos

Tudo o que você precisa saber sobre o Spring Boot

Atualmente produtividade é uma das principais palavras-chave quando falamos em desenvolvimento de software.

Não à toa, uma infinidade de ferramentas surge todos os dias visando justamente acelerar o processo de criação e implantação de soluções nos mais variados ambientes.

Se você desenvolve aplicações utilizando Java, você deve ter consciência de que o processo de configuração de ambientes de desenvolvimento e execução não é lá muito rápido.

Se você utiliza o Spring em seus projetos, esse processo tem a tendência de ser um pouco menos custoso, mas ainda sim pode ser algo exaustivo: o Spring deve ser configurado cuidadosamente para que funcione corretamente.

Se você gostaria de simplificar o desenvolvimento de aplicações Java sem ter que fazer inúmeras configurações e otimizações – e ainda elevar seu nível de produtividade – temos algo que pode te ajudar neste quesito: o Spring Boot.

Formação em Spring da TreinaWeb

O que é Spring Boot?

O Spring Boot é uma ferramenta que visa facilitar o processo de configuração e publicação de aplicações que utilizem o ecossistema Spring.

O Spring Boot fornece a maioria dos componentes baseados no Spring necessários em aplicações em geral de maneira pré-configurada, tornando possível termos uma aplicação rodando em produção rapidamente com o esforço mínimo de configuração e implantação.

O Spring Boot permite ainda selecionarmos os módulos que desejamos utilizar.

Com configurações rápidas, você consegue, por exemplo, disponibilizar uma aplicação baseada no Spring MVC, utilizando o Hibernate + JPA e o Thymeleaf como template engine.

Se você não quer utilizar o Thymeleaf, é simples: basta habilitar outro módulo de view engine, como o Mustache.

Para facilitar mais ainda, o Spring disponibiliza a página Spring Initializr. Nesta página, com alguns cliques, você pode habilitar os módulos desejados em seu projeto.

No final, a página irá gerar um projeto Maven ou Gradle pré-configurado e com todos os componentes solicitados especificados, bastando ao desenvolvedor começar a trabalhar com a codificação.


Página do Spring Initializr

Como o Spring Boot funciona?

O Spring Boot consiste, ao final, um template pré-configurado para desenvolvimento e execução de aplicações baseadas no Spring.

No final, temos uma fundação baseada no Spring Core, que traz os componentes-base do Spring, como o mecanismo de injeção de dependências, os mecanismos de internacionalização, a Spring Expression Language (SpEL) e alguns módulos-base do Spring AOP (módulo para implementação de programação orientada a aspectos no Spring).

O Spring Boot permite adicionar a esta estrutura-base o que é chamado de módulo.

Um módulo é na verdade uma biblioteca ou ferramenta do ecossistema Spring que pode ser adicionada a uma aplicação Spring convencional.

Por exemplo: podemos utilizar o Spring Data, que é um framework que provê acesso a bases de dados através da JPA.

Também poderíamos adicionar o Spring MVC, que permite criar aplicações web na arquitetura MV*. Ainda poderíamos adicionar, por exemplo, o Apache CFX (embora este não seja naturalmente um componente exclusivamente do ambiente Spring) para criarmos serviços RESTful.

Estes componentes conversariam todos em harmonia entre si, já que todos dependem diretamente ou indiretamente do Spring Core.

Aqui entram os problemas: em tese, precisaríamos configurar um a um destes módulos…

Ainda precisaríamos fazer com que estes módulos interagissem entre si, se estivéssemos falando de uma única aplicação.

Por fim, estes módulos, já que estamos falando de uma aplicação web, precisariam de um servidor web para funcionar, servidor este que também precisaria ser configurado. E é aqui que entra o Spring Boot.

Você pode compreender o Spring Boot como sendo uma “cola” que une todos estes componentes corretamente.

Mais do que isso: ele já traz uma série de configurações pré-definidas que já permitem o pleno funcionamento de cada um dos módulos, seja de maneira isolada ou de maneira integrada.

O Spring Boot ainda traz uma instância do Tomcat devidamente configurada como um servidor web “embarcado”, o que remove a necessidade de configurar até mesmo o servidor onde a aplicação irá ser executada.

Se o projeto for gerado a partir do Spring Initializr, tudo isso fica disponível somente com alguns cliques na interface web.

O Spring Boot consegue esta “façanha” por ser baseado no conceito chamado convenção sob configuração.

Basicamente, basta criar as estruturas de código nos locais corretos e com os nomes indicados na documentação que a ferramenta se encarrega de todo o resto, já que existem as configurações pré-definidas.

Porém, nada impede você de personalizar uma ou mais destas configurações. Você pode, por exemplo, trocar a porta onde o Tomcat irá “escutar” as requisições, trocar o provider JPA ou até mesmo utilizar o Jetty ao invés do Tomcat.

Basta realizar a configuração que é necessária que seja diferente da configuração-padrão.

O mais interessante é que só é necessário alterar a configuração que precisa que seja diferente da configuração-padrão: as demais configurações não são afetadas por esta alteração.

Por exemplo: você pode trocar o servidor web do Tomcat para o Jetty, mas isso não obrigará a reconfiguração do Spring Data, por exemplo.

O Spring Data, nessa situação, poderia continuar seguindo as configurações-padrão sem nenhum problema.

E o mais interessante: estas configurações todas podem ser feitas somente via código: os XMLs enormes de configuração podem ficar no passado. As configurações no Spring Boot são feitas majoritariamente via annotations.

Repare ainda a granularidade do Spring Boot: ele permite personalizar completamente os componentes que serão utilizados e expostos em sua aplicação.

É como se cada módulo fosse uma peça que se encaixasse no Spring Boot e no Spring Core, permitindo a você quaisquer combinações destes componentes de acordo com a necessidade.

>> Leitura recomendada:
Como construir uma aplicação serverless
usando JAVA?

Os componentes-base do Spring Boot

O Spring Boot possui 3 principais componentes que permitem toda essa “magia” acontecer:

  • Spring Boot Starter;
  • Spring Boot AutoConfigurator;
  • Spring Boot Actuator.

O Spring Boot Starter é o coração de uma aplicação Spring. Sua função principal é combinar as várias dependências advindas de um projeto Spring Boot em uma única dependência, retirando-se a necessidade de configuração de múltiplas dependências no Maven ou no Gradle.

Por exemplo: se quisermos criar uma aplicação Spring web “convencional”, nós precisaríamos de, pelo menos, as seguintes dependências:

  • Spring Core;
  • Spring Web;
  • Spring Web MVC;
  • Servlet API.

Adicionalmente, ainda precisaríamos definir e configurar as dependências relativas ao servidor web a ser utilizado, como o Tomcat. Certamente, este processo é muito trabalhoso.

Porém, o Spring Boot utiliza os inicializadores (starters) para diminuir este processo.

Se estivermos falando de uma aplicação web por exemplo, todas estas dependências acabam se resumindo a uma única dependência: o spring-boot-starter-web.

Esta dependência é um inicializador do Spring Boot. Ela condensa todas as dependências e configurações em uma única dependência, tornando o processo de definição de componentes da aplicação muito mais simples.

Podemos utilizar a figura abaixo para definir este processo:

No Spring Boot, os inicializadores geralmente começam com o sulfixo spring-boot-starter.

Logo depois, temos o Spring Boot AutoConfigurator.

Este componente é quem é responsável por gerenciar o processo de configuração de uma aplicação Spring Boot, fornecendo as configurações-padrão e fazendo a fusão destas com as possíveis configurações personalizadas.

Por exemplo: se estivermos utilizando o starter para aplicações web, é o Spring Boot AutoConfiguration quem vai fornecer as diretivas para resolução de views e resolvers, por exemplo.

Em uma aplicação Spring Boot, o AutoConfigurator pode ser visto através da utilização da tradicional annotation @SpringBootApplication, que fica acima do método de inicialização da aplicação.

Internamente, a annotation @SpringBootApplication  é uma combinação das tradicionais annotations @Configuration, @ComponentScan e @EnableAutoConfiguration do Spring.

No fim, ainda temos o Spring Boot Actuator. As principais funções deste componente são o provisionamento de endpoints e a obtenção de métricas da aplicação.

Por exemplo: por padrão, o Spring Boot AutoConfigurator define que o servidor web deve ser exposto em localhost na porta 8080. Quem faz o provisionamento desta configuração no servidor web é o Actuator.

Formação em Spring da TreinaWeb

Concluindo…

A possibilidade de redução de configuração e retirada de um pouco da verbosidade característica fez o Spring Boot rapidamente cair nas graças da comunidade e ser largamente difundido.

Hoje, uma série de projetos que estão em produção são fundamentados no Spring Boot: podemos citar o MIT, o Mercado Livre e o iFood como alguns dos exemplos.

Isso fez com que o Spring Boot se tornasse um dos principais projetos do ecossistema Spring.

O próprio site do Spring hoje é construído sob o Spring Boot. Além disso, a aderência ao Spring Boot guiou o desenvolvimento dos outros componentes do Spring.

O Spring Boot também vem sendo largamente utilizado para a criação de arquiteturas baseadas nos conceitos de microsserviços, já que sua configuração é praticamente dispensável e o mesmo produz aplicações até mesmo standalone, o que simplifica o processo de deploy de aplicações com arquitetura distribuída e heterogênea (exatamente o caso de ambientes onde os microsserviços são utilizados).

Para que um profissional Java esteja realmente alinhado com o mercado de trabalho atual, o conhecimento pelo menos básico do Spring Boot se torna indispensável, pois o mesmo é largamente utilizado em uma ampla gama de aplicações dentro das empresas.

Artigo escrito pela equipe TreinaWeb.



Tudo o que você precisa saber sobre o Spring Boot
5 (100%) 7 votes