Article image
Leandro Alves
Leandro Alves05/06/2024 21:52
Compartilhe

Um breve resumo do Spring e Spring Boot

  • #Java

Os Frameworks são conjuntos de ferramentas e padrões para simplificar o desenvolvimento de software, agilizando o processo e garantindo consistência. Eles oferecem componentes prontos e boas práticas para construir aplicações de forma eficiente e organizada. O Spring é o framework mais popular usado em Java, o Spring Boot é uma extensão do Spring Framework que visa simplificar o processo de configuração e inicialização de aplicativos Spring. Neste artigo tentarei explicar de forma resumida como utilizar deste poderoso framework e seu projeto.

Veja os assuntos que serão abordados neste artigo:

  • O que é o Spring
  • Microserviços
  • O que é o SpringBoot
  • Build tools
  • Inversão de Controle
  • Injeção de Dependências
  • A Injeção de Dependências no Spring
  • Apache Maven
  • Gradle
  • Diferenças entre Gradle e Maven
  • Como implementar o Spring/Springboot em uma aplicação Java
  • Spring Initializr
  • Downloads

O que é o Spring?

O Spring é um framework para desenvolvimento de aplicações em Java. Ele facilita a criação de aplicações robustas e de alta qualidade, ajudando os desenvolvedores a lidarem com a complexidade de grandes projetos.

Para entender melhor, imagine que você está construindo não apenas uma casa, mas todo um bairro. Você precisa de planejamento urbano, infraestrutura, serviços públicos e muito mais. O Spring fornece todas essas ferramentas e recursos para facilitar o desenvolvimento de aplicativos em grande escala. Ele ajuda a organizar e estruturar seu código de uma maneira mais eficiente, promovendo a modularidade, a reutilização e a manutenibilidade do código.

Além disso, o Spring incentiva práticas de desenvolvimento ágil e colaborativo, permitindo que equipes de desenvolvimento trabalhem de forma mais eficaz e produtiva. Com uma ampla gama de recursos e uma comunidade ativa de usuários e desenvolvedores.

O Spring oferece vários tipos de facilidades, como Spring Core, Spring MVC, Spring Data, Spring Cloud, o Spring Boot que vai ser o foco deste artigo, entre outros.

O Spring Core é a parte principal do Spring Framework, responsável por facilitar a criação de aplicações Java de forma organizada e flexível. Ele simplifica a gestão das dependências entre os objetos da aplicação, garantindo que eles sejam conectados de forma eficiente. Quando você utiliza o Spring Boot, o Spring Core já está incluído automaticamente como parte do framework.

Microsserviços

Microserviços são uma arquitetura de software onde cada serviço é responsável por uma parte do software de forma independente. Esses serviços são executados de forma autônoma e se comunicam entre si através de APIs. O Spring, com módulos como Spring Boot e Spring Cloud, fornece ferramentas para facilitar a criação e gerenciamento de microserviços.

O Spring Cloud é um conjunto de ferramentas que ajuda a criar e gerenciar sistemas distribuídos e microserviços.

O que é o SpringBoot?

Já o Spring Boot é uma extensão do Spring Framework que visa simplificar o processo de configuração e desenvolvimento de aplicativos Java. Ele fornece um conjunto de padrões e convenções predefinidos para ajudar os desenvolvedores a começarem rapidamente sem a necessidade de configurar manualmente muitos aspectos da aplicação.

Se pensarmos na analogia da construção de uma casa, o Spring Boot seria como uma equipe de arquitetos e construtores experientes que já têm um plano pré-definido e todas as ferramentas necessárias para construir uma casa de forma rápida e eficiente. Ele automatiza muitas tarefas comuns, como configuração de servidor, gerenciamento de dependências e inicialização de aplicativos, permitindo que os desenvolvedores se concentrem mais na lógica de negócios da aplicação. Em resumo, o Spring Boot simplifica o desenvolvimento de aplicativos Spring, reduzindo o tempo e a complexidade associados à configuração manual.

Build tools

As build tools, ou ferramentas de construção traduzido são programas utilizados para automatizar o processo de compilação, teste e empacotamento de projetos de Java. Elas ajudam os desenvolvedores a gerenciarem as dependências do projeto, compilar o código-fonte, executar testes automatizados, gerar artefatos (como arquivos JAR ou WAR) e realizar outras tarefas relacionadas à construção do software. Essas ferramentas de construção ajudam os desenvolvedores a padronizar e automatizar o processo de desenvolvimento de software, tornando-o mais eficiente, confiável e repetível.

Alguma das ferramentas mais utilizadas: Apache Maven, Gradle e Ant.

A escolha de qual ferramenta usar, vai depender do projeto e como pretende usar, cada uma delas tem suas vantagens e desvantagens, não falarei de todas, porem tentarei resumir as duas ferramentas mais conhecidas, o objetivo das ferramentas é fazer o desenvolvedor economizar tempo e com isso ganhar mais eficiência na hora de programar, por isso a escolha varia conforme o projeto e a familiaridade do programador.

Inversão de Controle

A Inversão de Controle (IoC) é um princípio de design de software onde o controle sobre a execução de determinadas tarefas é invertido. Em vez de você controlar diretamente a execução do programa, ele delega essa responsabilidade a um framework ou contêiner. Isso significa que em vez de você controlar diretamente como os objetos são criados e usados, o Spring faz isso por você.

Injeção de Dependências

Injeção de Dependência é receber o que precisa em vez de fazer você mesmo. No Spring, isso significa que o Spring cuida de fornecer automaticamente o que sua aplicação precisa, como objetos ou serviços. Funciona assim: você diz ao Spring o que sua aplicação precisa, e o Spring cuida de encontrar e fornecer essas coisas automaticamente. Isso facilita o desenvolvimento, pois você não precisa gerenciar manualmente as dependências, tornando o código mais simples e organizado.

Imagine que você precisa escrever uma redação, e para isso você precisa de uma caneta, em vez de você mesmo fazer a caneta, alguém te entrega uma, isso seria uma Injeção de Dependência: em vez de criar suas próprias coisas, você recebe o que precisa para poder escrever seus códigos.

A Injeção de Dependências no Spring

O Spring gerencia automaticamente a localização, criação e injeção das dependências declaradas, simplificando o desenvolvimento e garantindo que os objetos necessários estejam disponíveis quando necessário.

Primeiro você declara as dependências necessárias nos seus componentes (classes) através de anotações ou configurações, então quando sua aplicação é inicializada, o Spring localiza as dependências necessárias com base nas configurações fornecidas e as cria conforme necessário, assim, uma vez que as dependências são injetadas nos seus componentes, você pode utilizá-las normalmente dentro da sua aplicação.

Apache Maven

O Apache Maven é uma ferramenta de automação de compilação amplamente utilizada no desenvolvimento de software Java. Ele simplifica e gerencia o processo de compilação, teste e empacotamento de um projeto Java.

Ele encontra e organiza as "peças" necessárias para o projeto (chamadas de dependências), seguindo receitas padrão. Com o Maven, os desenvolvedores podem criar projetos Java sem se preocupar muito com a parte de configurar tudo manualmente. Ele automatiza tarefas de construção e gerenciamento de projetos Java, facilitando o trabalho dos desenvolvedores.

Gradle

Similar ao Maven, o Gradle também é uma ferramenta de automação de compilação amplamente utilizada no desenvolvimento de software Java. Ele funciona a baseado em plugins, ou seja, além dos já existentes, você também pode criar scripts próprios para uso no Gradle.

A própria Google utiliza do Gradle em seus projetos.

Diferenças entre Gradle e Maven

Por serem similares e terem praticamente o mesmo proposito, ambas podem acabar sendo confundidas, porém cada uma trabalha de um jeito diferente.

  1. Linguagem de Configuração:
  2. Maven: Utiliza XML para configurar projetos. Embora seja amplamente adotado, o XML pode parecer mais verboso e menos intuitivo para algumas pessoas.
  3. Gradle: Usa Groovy para escrever scripts de build, que é mais expressiva e fácil de entender para muitas pessoas.
  4. Desempenho:
  5. Maven: Usando o XML, ele pode levar tempos maiores de compilação para projetos grandes.
  6. Gradle: A abordagem DSL faz com que o código seja menor, além de um mecanismo de cache, gerando uma execução mais rápida.

Comparação de Código:

Maven:

image

Fonte: Pedro Pietroluongo (dev.to: Comparação Entre Apache Maven e Gradle)

Gradle:

image

Fonte: Pedro Pietroluongo (dev.to: Comparação Entre Apache Maven e Gradle)

Como implementar o Spring/Springboot em uma aplicação Java

Configuração do Ambiente de Desenvolvimento

Certifique-se de ter o Java Development Kit (JDK) instalado em seu sistema.

Configuração do Gerenciador de Dependências

Você pode usar uma ferramenta de gerenciamento de dependências como o Maven ou o Gradle para configurar seu projeto Java e gerenciar as dependências do Spring ou do SpringBoot. O Maven é o gerenciador que mais usei, é como um organizador que ajuda os desenvolvedores a criar e gerenciar projetos Java de forma fácil. Ele encontra e organiza as "peças" necessárias para o projeto (chamadas de dependências), seguindo receitas padrão. Com o Maven, os desenvolvedores podem criar projetos Java sem se preocupar muito com a parte de configurar tudo manualmente. Ele basicamente automatiza tarefas de construção e gerenciamento de projetos Java.

Adicionar Dependências

Se estiver usando o Maven, adicione as dependências do Spring ou do Spring Boot ao arquivo pom.xml. Se estiver usando o Gradle, adicione as dependências ao arquivo build.gradle.

Spring Initializr

O Spring Initializr é uma plataforma que oferece uma configuração e criação inicial do seu projeto de forma mais rápida e gerando automaticamente toda a estrutura do seu projeto. Acessível via: https://start.spring.io/

image

Você consegue configurar como quer seu projeto e já deixar as dependecias configuradas de acordo com que vai usar, e se necessário, atualizar o projeto com novas dependências, sem a necessidade de procurar na Web pelas dependências manualmente.

  • Projeto: Escolha a ferramenta que melhor se encaixa no seu projeto, ou que você mais gosta. Gradle Groovy - Gradle Kotlin - Maven
  • Linguagem de programação: Aqui você pode selecionar em qual linguagem vai ser feito o projeto. Java - Kotlin - Groovy
  • Versão do Spring Boot: Aqui, você pode escolher a versão do Spring Boot dentre as disponiveis.
  • Group: Um identificador único para o seu projeto, como as package. Seguindo o formato de nome de domínio invertido. Se você tem um domínio exemplo.com, o grupo seria com.exemplo.
  • Artifact: É o nome do arquivo de empacotamento, escrito em letras minúsculas e sem caracteres especiais. Pode ser um JAR (arquivo Java) ou um WAR (arquivo ou recurso de aplicativo web). Exemplo: demo.
  • Name: O nome que será atribuído ao seu projeto automaticamente com base no nome do artefato.
  • Description: Um resumo breve do que seu projeto faz.
  • Package name: Combinação do nome do grupo e do artefato. Exemplo: com.exemplo.demo
  • Packaging: Define se seu projeto será empacotado como um JAR ou WAR.
  • Java: A versão do Java que o seu projeto irá usar dentre as disponibilizadas.
  • Dependencies: Aqui você consegue ir adicionando as dependências sem precisar procurá-las na web.
  • Add Dependencies: Local de busca das dependências, você consegue selecionar múltiplas dependências adicionando todas juntas.
  • Remover Dependencies: Caso você tenha colocado alguma dependência a mais, é possível apenas remove-la.
  • Generate: Clicando neste botão, o seu projeto é baixado localmente em seu computador, para que você possa começar a programar na sua IDE de preferência.
  • Explore: Você consegue navegar pelo código antes de baixar, podendo ver como vai ficar o esqueleto inicial e confirmando se esta tudo certo para baixar.
  • Share: Voce consegue compartilhar sua configuração copiando o link pelo botão Share.

Conclusão

Existem diversos framework para diversos tipos de projetos, com o Spring, o desenvolvedor consegue uma gama maior de possibilidades de poder desenvolver seus projetos de forma mais rápida, otimizando grande parte das redundâncias, simplificando o desenvolvimento, promovendo boas práticas, e oferecendo um ecossistema abrangente de funcionalidades e recursos de alta qualidade.

O Spring é uma escolha sólida para desenvolvedores que buscam produtividade, flexibilidade e qualidade em seus projetos, podendo ajudar em vários tipos de projetos, seja local, ou e nuvem.

Downloads

Java Development Kit (JDK): https://www.oracle.com/br/java/technologies/downloads/

Maven: https://maven.apache.org/install.html

Gradle: https://gradle.org/install/

Referências

Spring. Spring Framework Documentation. Disponível em: <https://docs.spring.io/spring-framework/reference/index.html>

Azure. O que é o Java Spring Boot? Disponivel em: <https://azure.microsoft.com/pt-br/resources/cloud-computing-dictionary/what-is-java-spring-boot>

Dev. Microsserviços com Spring Cloud: Introdução. Disponivel e: < https://dev.to/womakerscode/microsservicos-com-spring-cloud-introducao-3cn6>

Techtarget. Oque é Spring. Disponível em: <https://www.techtarget.com/searchapparchitecture/definition/Spring-Framework>

Devmedia. Como começar com Spring? Disponível em: <https://www.devmedia.com.br/exemplo/como-comecar-com-spring/73>.

Medium. Porque você deve usar Spring Boot. Disponível em: <https://medium.com/@duduxss3/porque-voc%C3%AA-deve-usar-spring-boot-a22f75da0955>

Medium. Entenda o que são build tools do mundo Java. Disponivel em: < https://medium.com/@alex.felipe/entenda-o-que-s%C3%A3o-build-tools-do-mundo-java-682a26e38ff2 >

Hnz. Gradle: saiba o que é e como utilizar. Disponivel em: < https://hnz.com.br/gradle-saiba-o-que-e-e-como-utilizar/>

Dev. Comparação Entre Apache Maven e Gradle. Disponível em: <https://dev.to/pedropietro/comparacao-entre-apache-maven-e-gradle-81h>

Raffaelbrandao. Iniciando um novo projeto Spring Boot no Spring initializr. Disponivel em: <https://blog.raffaelbrandao.com/iniciando-projeto-spring-boot-no-spring-initializr/>

Compartilhe
Comentários (1)
Marcio Herrero
Marcio Herrero - 05/06/2024 22:38

Ficou bem legal o artigo e o resumo ficou bem explanado!

Parabéns!