Quem desenvolve aplicações utilizando Java sabe que o processo de configuração de ambientes de desenvolvimento não é lá muito rápido. Mas, com a ajuda das ferramentas certas, como no caso do Spring Boot, é possível facilitar e muito essa jornada.
Se você faz parte do time de desenvolvedores que não aguenta mais perder tempo configurando um projeto ao invés de desenvolver, de fato, então o artigo de hoje chegou na hora certa.
A partir de agora, vamos te contar tudo o que é preciso saber para simplificar o desenvolvimento de aplicações Java, sem ter que fazer inúmeras configurações e otimizações.
Nesse artigo seguiremos esta ordem para explicar o Spring Boot:
O que é Spring Boot?
Para quem ainda não ouviu falar, o Spring Boot é uma ferramenta que nasceu a partir do Spring, um framework desenvolvido para a plataforma Java baseado nos padrões de projetos, inversão de controle e injeção de dependência.
Embora o Spring framework tenha sido criado justamente com o intuito de simplificar as configurações para aplicações web, ele não atendeu 100% as expectativas do mercado ao ser lançado, já que as configurações seguiam grandes e complexas demais.
Sendo assim, um novo projeto foi acrescentado ao framework para mudar esse jogo e abstrair toda a complexidade que uma configuração completa pode trazer: o Spring Boot.
Apresentando um modelo de desenvolvimento mais simples e direto, esse framework foi determinante para que o uso do ecossistema Spring decolasse.
No geral, ele fornece a maioria dos componentes necessários em aplicações em geral de maneira pré-configurada, possibilitando uma aplicação rodando em produção rapidamente, com o esforço mínimo de configuração e implantação.
Em outras palavras, podemos entender o Spring Boot como um template pré-configurado para desenvolvimento e execução de aplicações baseadas no Spring.
Por que usar o Spring Boot?
Como dissemos anteriormente, o maior ganho dessa ferramenta é a simplificação na hora de desenvolver aplicações Java. Mas essa é apenas a pontinha do iceberg.
Na prática, essa ferramenta oferece série de vantagens, como, por exemplo, auxiliar nas configurações iniciais necessárias para que os desenvolvedores possam, enfim, começar a codificar, além de contribuir com projetos mais ágeis e organizados.
Ou seja: com o Spring Boot, você não precisa temer ter que gastar seu tempo desenvolvendo uma aplicação do zero, já que receberá a maioria dos recursos necessários.
Para cumprir com esse propósito, o framework se baseia em quatro princípios centrais:
- Oferecer uma experiência de início de projeto rápida e direta;
- Apresentar uma visão opinativa e flexível sobre o modo como os projetos Spring devem ser configurados;
- Fornecer requisitos não funcionais pré-configurados;
- Não prover geração de código e zerar a necessidade de arquivos XML.
Para complementar o seu aprendizado sobre as vantagens do Spring Boot, recomendamos o vídeo abaixo.
Nele, o instrutor Java da AlgaWorks, Alexandre Afonso, destaca alguns pontos importantes da ferramenta, como o servidor embarcado (Tomcat) e o favorecimento da convenção sobre a configuração. Acompanhe:
Os componentes-base
O Spring Boot possui três componentes principais que fazem toda a “magia” apresentada acima acontecer.
Na sequência, explicaremos qual é a função de cada uma delas, para você ficar mais inteirado sobre esse universo:
Spring Boot Starter
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: para 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.
Como deu para notar, esse é um processo bem trabalhoso. Sendo assim, Spring Boot utiliza os inicializadores (starters) a fim de diminuí-lo significativamente.
Se estivermos falando de uma aplicação web, por exemplo, estas dependências podem ser resumidas a apenas uma: o spring-boot-starter-web.
Não precisamos nem dizer o quanto isso torna o processo de definição de componentes da aplicação muito mais simples, né?
Spring Boot AutoConfigurator
É 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.
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.
Spring Boot Acutator
Completando a lista, temos o Spring Boot Actuator, que possui duas funções principais: o provisionamento de endpoints e a obtenção de métricas da aplicação.
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.
Como startar?
Agora que você já sabe mais sobre o Java Spring Boot, chegamos à pergunta que não quer calar: como começar a utilizar este framework?
Bom, para iniciar a criação do projeto, recomendamos o uso de um facilitador disponibilizado pelo próprio Spring: o Spring Initializr. Com ele, é possível habilitar os módulos desejados em seu projeto em poucos cliques.
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.
Para usar o Spring Initializr, basta acessar https://start.spring.io/ e inserir as informações necessárias sobre projeto, como:
- Tipo de projeto que será utilizado (Maven ou Gradle);
- Linguagem que será usada no desenvolvimento back-end;
- Qual a versão do Spring Boot você pretende utilizar;
- Grupo da aplicação;
- Lista das dependências que o projeto irá usar.
Após finalizar o preenchimento, basta clicar no botão “Generate Project” para o Spring Initializr realizar a configuração e download de projeto em formato zip.
Na sequência, será preciso descompactar o arquivo e importá-lo para o IDE ou Editor de Código Fonte da sua preferência, para que você possa enfim iniciar o desenvolvimento.
Aqui, uma boa alternativa é utilizar o Spring Tool Suite, um IDE que facilita o uso de Spring de modo geral e é uma mão na roda para criar projetos com Spring Boot. Caso você se interesse em instalá-lo, eis um vídeo que pode ajudar:
Por fim, vale pontuar que o Spring Boot já conta com um servidor web Java embarcado, o TomCat, o que remove até mesmo a necessidade de configurar o servidor onde a aplicação será executada.
Lembrando que, por padrão, ele roda a aplicação na porta 8080.