What Is Spring Boot?

Alan Zeichick | Senior Writer | October 29, 2024

Escrever software é como abrir um novo documento em branco no seu processador de texto favorito: O que você faz primeiro? E como você lida com todo o tedioso código de texto padronizado necessário para criar um aplicativo complexo sem esquecer algo importante ou cometer um erro de configuração? É aí que entram os frameworks de aplicativos, que fornecem a estrutura para diferentes tipos de aplicativos. Uma vez que sua equipe de desenvolvimento tenha escolhido um framework de aplicativos, o processo de criação do software pode realmente começar a sério. Não, não é tão simples quanto um modelo de preenchimento de lacunas, mas o andaime de uma estrutura de aplicativos cuida dos pré-requisitos para projetos que vão desde um simples microsserviço ou aplicativo Web até um aplicativo cliente/servidor tradicional.

Para desenvolvedores Java, um dos frameworks de aplicativos mais populares é o Spring, que é incrivelmente flexível e versátil. Você pode fazer praticamente qualquer coisa com a Spring, desde a criação de um serviço simples até o desenvolvimento de um enorme sistema de negócios críticos. E embora a versatilidade seja a maior força da Primavera, também é a maior fraqueza da Primavera: muitas vezes é muito complexa e oferece muitas opções. É aí que entra o Spring Boot. Spring Boot é uma extensão do Spring que é mais fácil de usar porque faz muitas das escolhas para você, particularmente em torno de gerenciamento de dependência e configurações.

Resumindo: Se você está pensando em usar o Spring, provavelmente pode – e deve – usar o Spring Boot.

O que é Spring Boot para Java?

Spring Boot é uma estrutura baseada em Java de código aberto para criação de aplicativos baseados em Spring. O Spring, que foi desenvolvido no início dos anos 2000, rapidamente se tornou um dos frameworks Java mais populares para aplicativos de nível empresarial. O Spring Boot foi lançado mais tarde como uma estrutura mais fácil de usar que estende todas as ferramentas e tecnologias do Spring para permitir o rápido desenvolvimento de aplicativos.

Java e Spring Framework

Para os desenvolvedores de Java, o Spring tem uma impressionante variedade de tecnologias essenciais, incluindo injeção de dependência para gerenciamento de eventos, internacionalização, vinculação de dados, conversa de tipo e programação orientada a aspectos. Você o nomeia, está no Spring: teste, zombaria, objetos de dados, aplicações web Model-View-Controller, remotagem, programação de tarefas - a lista continua. Os desenvolvedores podem optar por usar alguns ou todos esses recursos - cabe à equipe de desenvolvimento de software e aos arquitetos.

O Spring Framework é um software de código aberto sob a licença Apache 2.0.

O projeto Spring tem muitos subprojetos, com foco em aplicativos em nuvem, segurança, publicação e consumo de web services, gerenciamento de credenciais, acesso a dados, gerenciamento de eventos e até mesmo inteligência artificial. Essa flexibilidade pode levar à complexidade: a criação de aplicativos elaborados baseados em Spring pode levar as equipes de desenvolvimento a uma série de opções, escolhas e configurações, algumas das quais, uma vez configuradas manualmente, são difíceis de alterar quando você começa a codificar.

Digite Spring Boot.

Spring vs. Spring Boot

  • Spring Boot é um dos subprojetos da Spring. Também é open source sob a licença Apache 2.0.
  • Alguns desenvolvedores ficam surpresos ao saber que a base de código do Spring Boot é realmente maior do que o próprio Spring Framework. Isso porque Spring Boot é uma extensão do Spring que é projetado para ser inteligentemente auto-configurado; o termo usado é "opinionado".
  • Depois de dizer ao Spring Boot o que você está tentando construir, ele faz escolhas sobre quais módulos e bibliotecas de terceiros carregar e provisionar.
  • Uma nota importante: quando dizemos "inteligente" aqui, não queremos dizer IA. As escolhas do Spring Boot são algorítmicas.
  • O peso extra do framework Spring Boot em si não aparece no aplicativo completo. Na verdade, exatamente o contrário, como Spring Boot quase sempre escolhe apenas o que é necessário.
  • Em outras palavras, enquanto Spring Boot é opinativo, tem opiniões muito boas.
  • Por exemplo, seu aplicativo precisa de um servidor Web incorporado? Com os aplicativos Spring, você precisará decidir por si mesmo e, em caso afirmativo, escolher qual servidor web incorporar e fazer todas as opções de configuração manualmente, inclusive para segurança.
  • Com o Spring Boot, se o aplicativo precisar de um servidor web, o Spring Boot instala e configura um automaticamente.

Principais diferenças

As principais diferenças entre Spring e Spring Boot envolvem uma compensação entre complexidade e facilidade de uso.

Spring é quase infinitamente configurável, mas você terá que gastar uma boa quantidade de tempo fazendo escolhas, selecionando módulos e bibliotecas de terceiros para instalar e, em seguida, configurando esses recursos e funções. E você terá que fazer isso antes de fazer qualquer tipo de começo significativo para o processo de codificação.

Com Spring Boot você pode começar a trabalhar muito mais rápido porque o framework fará muitas das escolhas de instalação e configuração para você. Você vai desistir de alguma personalização, mas francamente, isso raramente é um problema. Em quase todos os casos, o Spring Boot é melhor para projetos de desenvolvimento web e microsserviços; em casos de borda ou para projetos muito grandes, você pode optar por ir com o Spring.

Principais conclusões

  • O Spring é uma estrutura incrivelmente robusta e complicada para criar aplicativos corporativos baseados em Java. Tal como acontece com uma caixa de ferramentas que tem todas as chaves de fenda possíveis, chave, broca e soquete, está tudo lá, mas o número de escolhas pode ser esmagador.
  • Pense no Spring Boot como uma versão do Spring que é muito mais fácil de usar, como se alguém embalasse uma pequena caixa de ferramentas com apenas o que você precisará para um trabalho específico.
  • Tanto o Spring quanto o Spring Boot podem ser usados para criar aplicativos modulares em Java.
  • O Spring Boot se destaca na criação de aplicativos menores, como microsserviços e aplicativos web, porque suas configurações simplificadas e padrões inteligentes colocam sua equipe em funcionamento rapidamente.
  • Se um aplicativo for muito grande e complexo, talvez você queira usar o Spring Framework mais flexível.

Spring Boot Explicado

Spring Boot é uma estrutura de aplicativos de código-fonte aberto para criar aplicativos Java empresariais. Projetado para ajudar as equipes de desenvolvimento a começar rapidamente, o Spring Boot cria aplicativos Spring autônomos sem as opções de configuração às vezes tediosas que o Spring exige.

Os objetivos do projeto Spring são criar uma experiência muito mais rápida e simplificada, sendo opinativo, ou seja, usando algoritmos para escolher quais módulos e recursos do Spring ativar e quais bibliotecas de terceiros instalar e, em seguida, configurá-los para você. Ele também adiciona muitas funcionalidades não codificadas a um projeto Java, como servidores web incorporados, sistemas de segurança, métricas e análises.

A versão atual do Spring Boot, 3.3.4 no momento da escrita, requer o Java 17 no mínimo e o Spring Framework 6.1.13 ou posterior. A Spring Boot funciona com as ferramentas de compilação Maven 3.6.3 e Gradle 7.x e 8.x. Para servlets embutidos, Spring Boot funciona com Tomcat, Jetty e Undertow, ou qualquer contêiner compatível com servlet 5.0+. Você provavelmente vai querer usar o GitHub também.

O benefício do Spring Boot é que você pode aproveitar os muitos recursos do framework de aplicativos Spring sem todas as complexidades do Spring. Os desenvolvedores podem executar seus projetos em qualquer máquina virtual Java compatível com o Java 17 ou posterior, o que significa que não há necessidade de configurar um servidor Web separado ou definir arquivos WAR (arquivo de aplicativos web).

Em vez de exigir configurações XML para configurar aplicativos Java, o Spring Boot usa application.properties, ideal para aplicativos orientados a banco de dados que usam o Oracle Database ou o MySQL. Na verdade, se o seu aplicativo usa o MySQL, o Spring Boot pode configurar automaticamente um banco de dados na memória para você. O Spring Data JPA (Java Persistence API) pode ser usado para trabalhar com uma ampla variedade de tecnologias de acesso a dados.

Se você quiser se aprofundar na arquitetura, confira este exemplo de aplicativo baseado em Spring Boot.

Como funciona a Spring Boot?

O Spring Boot, como muitos frameworks de aplicativos Java e outros add-ins, usa injeção de dependência (DI) e inversão de controle (IoC) para adicionar funcionalidade aos programas Java.

O DI permite que um framework externo — neste caso, o Spring Boot — forneça objetos e funções para o aplicativo empresarial, para que o desenvolvedor não precise criá-los. Tudo o que o desenvolvedor precisa saber, ou definir, dependendo das circunstâncias, são as interfaces para esses objetos e funções.

IoC é onde o fluxo de controle de um programa é fornecido a partir de uma fonte externa; no caso do Spring Boot, o desenvolvedor lida com a lógica do programa, enquanto a estrutura do aplicativo fornece o loop de eventos e o envio de mensagens. Recipientes IoC especiais em Spring lidam com injeção de dependência de objetos e funções de forma eficiente e com o mínimo esforço do desenvolvedor.

Spring e Spring Boot usam anotações Java. Esse é um sistema em que tags não compiláveis prefixadas com um símbolo @ são incorporadas ao código e fornecem metadados que podem ser usados para adicionar funcionalidade.

O desenvolvedor carrega o Spring Boot adicionando as dependências do Spring e do Spring Boot Starter nos arquivos Maven pom.xml ou Gradel build.gradle do novo projeto. A partir daí, o desenvolvedor adiciona as anotações do Spring Boot apropriadas ao código, como @RestController para criar um controlador REST para serviços Web. Spring Boot adiciona muitas facilidades que simplificam muito o design e a codificação do aplicativo; por exemplo, ele fornece integração com três bibliotecas de mapeamento JSON, como o uso de Jackson para serializar e desserializar código. As instalações do Spring Security são essenciais para a construção de qualquer tipo de aplicativo que use HTTP ou formulários – ou, francamente, qualquer aplicativo web.

O framework Spring Boot configura uma arquitetura de quatro camadas que separa a solicitação HTTP e as transferências de dados JSON da lógica de negócios do programa e, em seguida, a lógica de uma representação de objetos de dados da representação real em um banco de dados externo. Essa arquitetura pode ser usada como está, o que é ideal para criar microsserviços, ou mapeada para um padrão de design Model-View-Controller, que pode ser mais adequado para um aplicativo web.

Depois de adicionar todas as dependências e gravar a lógica do programa, os comandos padrão de execução Maven e Gradle iniciarão o aplicativo. O Spring Boot garantirá que tudo o que você precisa do Spring Framework esteja instalado e configurado adequadamente para o projeto. Se você quiser criar um arquivo executável independente, o Spring Boot permite criar um arquivo JAR aninhado diretamente, que você pode distribuir para execução em qualquer JVM padrão (Java 17 ou posterior) ou em uma plataforma de imagem nativa, como o GraalVM.

Vantagens da bota de mola

O Spring Boot oferece várias vantagens para os desenvolvedores Java corporativos sobre o uso do Spring Framework em si. De um modo geral, se os requisitos do projeto puderem ser atendidos pela Spring ou Spring Boot, é melhor usar a Spring Boot para aproveitar a configuração simplificada e aumentar a produtividade. As vantagens específicas incluem:

  • Desenvolvimento rápido. Com Spring Boot, as equipes de desenvolvimento podem chegar ao chão. Os algoritmos "opinionados" do Spring Boot podem detectar, carregar e configurar os módulos, funções e bibliotecas de terceiros necessários para o projeto. Por outro lado, com o Spring, os desenvolvedores têm que escolher manualmente o que incluir.
  • Configuração simplificada. Desenvolvedores que usam linguagens como Java, C++ e C# sabem que configurar todos os elementos de um aplicativo complexo pode ser demorado e propenso a erros. Spring Boot faz um excelente trabalho com configuração automática de módulos e bibliotecas de terceiros, o que economiza muito trabalho. Além disso, se os módulos ou bibliotecas que você usa mudarem durante o processo de desenvolvimento, o Spring Boot simplesmente se adaptará e alterará a configuração automaticamente.
  • Recursos incorporados para microsserviços. O Spring Boot pode ser usado para criar qualquer tipo de aplicativo Java empresarial, seja reativo, orientado a eventos, em lote, serverless, cliente/servidor ou web. No entanto, é particularmente forte na construção de microsserviços, com padrões integrados para descoberta de serviço, balanceamento de carga, rastreamento de execução distribuída e streaming de mensagens em tempo real. Igualmente importante, os aplicativos Spring Boot começam rapidamente e são desligados rapidamente, o que é essencial para a escalabilidade de microsserviços.
  • Gerenciamento de dependências Dependências são quando uma parte do código de um aplicativo depende da existência e do bom funcionamento de bibliotecas, módulos, plug-ins, microsserviços e APIs. O Spring Boot tem suporte integrado para injeção de dependência (DI), que permite que objetos e funções definidos externamente sejam incorporados ao aplicativo com o mínimo de esforço. Isso permite que os desenvolvedores se concentrem em sua lógica de programa, em vez de se preocupar com os detalhes técnicos específicos dos recursos externos.
  • Capacidades prontas para produção. O objetivo não é escrever software. É para executar software. O empacotamento e a distribuição de aplicativos Java corporativos podem ser complicados por causa da falta de padrões amplamente aceitos para empacotá-los, e o mesmo acontece com os aplicativos que usam o Spring Framework. O Spring Boot resolve esse problema permitindo que as equipes escolham arquivos JAR executáveis ou arquivos WAR implantáveis. Os aplicativos também podem ser implantados diretamente em contêineres ou executados como serviços do sistema Windows ou Unix/Linux.
  • Integração transparente. Quase por definição, um aplicativo Java empresarial precisa conversar com outros aplicativos, como bancos de dados, sistemas ERP, aplicativos em nuvem, aplicativos cliente/servidor legados — você o nomeia. O Spring Boot inclui muitas integrações prontas para uso, e quase todos os projetos de código aberto ou grandes provedores de software fornecem ferramentas e orientações de integração. Por exemplo, a Oracle fornece e suporta JDBC, UCP e Oracle Backend for Spring Boot and Microservices, bem como um conjunto de Spring Boot Starters para várias tecnologias Oracle.

Recursos do Spring Boot

O Spring Boot evoluiu ao longo de décadas para atender melhor às necessidades dos desenvolvedores Java corporativos. Embora o número de recursos possa parecer esmagador, a realidade é que o trabalho da Spring Boot é simplificar. Ao escolher de forma inteligente quais módulos, funções e bibliotecas incluir em um projeto, os desenvolvedores podem se concentrar mais na lógica do programa, menos na infraestrutura, encanamento e andaimes.

Aqui estão alguns dos recursos do Spring Boot que ajudam a simplificar o processo de desenvolvimento.

  • Autoconfiguração. A abordagem opinativa da Spring Boot determina quais módulos e bibliotecas externas usar com um projeto e, em seguida, configura-os automaticamente. Isso economiza horas incontáveis para os desenvolvedores não apenas escolher esses módulos e bibliotecas, mas também aprender a configurá-los para o contexto do aplicativo, um processo que pode ser bastante demorado e propenso a erros.
  • JARs executáveis independentes. Um dos recursos mais importantes do Spring Boot é a sua capacidade de criar arquivos JAR executivos independentes (arquivo Java) que podem ser distribuídos diretamente para o ambiente de tempo de execução. O JAR inclui todos os arquivos e metadados da classe Java, bem como quaisquer imagens e outros recursos necessários para executar os aplicativos stand-alone.
  • Servidores Web incorporados. Se o aplicativo Java empresarial exigir um servidor HTTP, o Spring Boot instalará e configurará esse servidor automaticamente e com fortes opções de segurança padrão. Os servidores disponíveis incluem Tomcat, Jetty e Undertow.
  • Spring Boot Starters. Um aplicativo empresarial terá muitas bibliotecas e dependências para servidores Web, ferramentas de análise, depuradores, padrões de design, persistência, comunicações, zombaria, balanceamento de carga e assim por diante. Um Spring Boot Starter é uma forma de agrupar todos esses em um único arquivo de configuração para simplificar o processo, reduzir a quantidade de código e garantir que nada seja esquecido. É um one-stop shopping.
  • Configuração externalizada. O Spring Boot facilita a execução do código de um aplicativo em ambientes diferentes. A configuração externalizada permite que você adapte dezenas de propriedades, incluindo argumentos de linha de comando, arquivos de propriedades e variáveis de ambiente, específicas de um ambiente de runtime e as encapsule em um único arquivo que é carregado no runtime e acessado por meio de anotações @.
  • Ferramentas de desenvolvimento Spring Boot. Os desenvolvedores que criam aplicativos Java empresariais podem usar sua cadeia de ferramentas favorita, incluindo IDE, ferramentas DevOps, gerenciamento de código-fonte e assim por diante. Além disso, o Spring Boot inclui ferramentas extras, que podem ser carregadas ou não, de acordo com a preferência do desenvolvedor, para auxiliar no gerenciamento de erros, registro em log, execução remota e administração de classpath.
  • Atuador da bota de mola. O Spring Boot Actuator permite definir pontos finais que podem ser monitorados durante o runtime para determinar a integridade do aplicativo. Esses pontos finais podem ser ativados, desativados e expostos usando HTTP ou JMX (Java Management Extensions); normalmente, você os assistiria usando sua ferramenta de gerenciamento de aplicativos favorita para ver se o aplicativo está indo bem ou se está ficando sem memória, paralisando, diminuindo a velocidade, lançando exceções ou se está com problemas.
  • Gerenciamento de dependência simplificado. Indiscutivelmente a maior força do framework Spring Boot é que ele permite que os desenvolvedores evitem em grande parte a configuração manual de dependências. Os recursos do Spring Boot para gerenciamento de dependência simplificado podem configurar automaticamente os módulos e bibliotecas necessários, usar o Spring Boot Starters para empacotar bibliotecas e empacotar aplicativos usando JARs executáveis independentes.
  • Recursos prontos para produção. Quando um aplicativo está pronto para ser implantado, o Spring Boot oferece vários recursos que podem ajudar. Isso inclui Spring Boot Starters para empacotar todas as configurações, JARs executáveis independentes para distribuir o aplicativo e Spring Boot Actuators para fornecer monitoramento de integridade de runtime.
Por que o Spring Boot é tão popular? diagrama, descrição abaixo

Por que o Spring Boot é tão popular?

Os benefícios vão desde o desenvolvimento até a implantação de aplicativos.

Recursos populares do Spring Boot

Desenvolvimento:

  • Autoconfiguração
  • Ferramentas de desenvolvimento Spring Boot
  • Gerenciamento de dependência simplificado
  • Servidores Web incorporados

Implantação:

  • JARS executáveis autônomos
  • Iniciantes da Bota Primavera
  • Configuração externalizada
  • Atuador da bota de mola
  • Recursos prontos para produção
Estes e outros benefícios do Spring Boot o tornam uma escolha popular para desenvolvedores Java.

Arquitetura Spring Boot

O Spring Boot pode ser usado para ajudar a escrever qualquer tipo de aplicativo Java empresarial, grande ou pequeno, seja um microsserviço simplificado, um aplicativo complexo de negócios críticos para executar on-premises ou um aplicativo de nuvem moderno. Um aplicativo típico de Spring Boot contém quatro camadas, que podem ser adaptadas às necessidades do aplicativo. Um microsserviço simples, por exemplo, pode não ter uma camada de banco de dados ou persistência.

De baixo para cima, aqui estão as quatro camadas:

  • Camada de banco de dados. O banco de dados real ou os bancos de dados usados para conduzir os aplicativos e que são usados para operações CRUD. Você pode praticamente usar qualquer banco de dados extensível com Spring Boot.
  • Camada de persistência. A camada de persistência fornece uma abstração objeto-relacional da camada de banco de dados real. A lógica do aplicativo lida com a camada de persistência interagindo com objetos de negócios; o código da camada de persistência converte-os em linhas/colunas relacionais e passa a operação CRUD para a camada do banco de dados.
  • Camada de negócios. Aqui é onde uma equipe de desenvolvimento resolve o problema da organização. A camada de negócios inclui o fluxo do programa, bem como instruções para o tratamento de eventos. Ele se comunica com usuários e aplicativos externos na camada de apresentação e com dados por meio da camada de persistência.
  • Camada de apresentação. A camada de apresentação de um aplicativo Spring Boot fala com o mundo exterior via HTTP e JSON. As solicitações recebidas são autenticadas aqui e o JSON é descompactado. Em seguida, as solicitações de serviço são passadas para a camada de negócios para tratamento. Interfaces externas para o aplicativo são chamadas de "Views".

Configurar Spring Boot

Pronto para experimentar o Spring Boot? É fácil configurá-lo - e talvez seja por isso que tantas equipes de desenvolvimento estão usando o Spring Boot e por que os alunos estão aprendendo esse popular framework de aplicativos. Qualquer pessoa que queira começar deve conferir a documentação oficial do projeto de código aberto Developing Your First Spring Boot Application, mas aqui está um resumo das etapas:

  1. Certifique-se de executar o Java 17 ou mais recente.
  2. Configure o Maven ou o Gradle e defina o arquivo Maven pom.xml ou Gradle build.gradle para incluir a estrutura do aplicativo Spring Boot.
  3. Adicione as dependências de classpath para o Spring Boot Starter, que gerencia as dependências específicas do seu projeto.
  4. Escreva o seu código, que pode ser um simples "Hello World" ou um enorme aplicativo essencial para os negócios, com as anotações adequadas para incluir a funcionalidade do Spring Boot.
  5. Execute o aplicativo localmente usando Maven ou Gradle e confirme se ele funciona para sua satisfação.
  6. Empacote o aplicativo em um JAR executável independente que você possa distribuir, se necessário.

Se você quiser experimentar o serviço, confira o CloudBank, um aplicativo que usa a maioria dos serviços implantados.

Usando Tecnologias Oracle com Spring Boot

A camada de banco de dados do Spring Boot é compatível com uma ampla variedade de bancos de dados na nuvem e on-premises; duas opções populares são Oracle Database e MySQL. As equipes de desenvolvedores da Oracle estão comprometidas em apoiar o Spring Boot, contribuindo com o código de volta para a biblioteca de código aberto e integrando as muitas estruturas e bibliotecas da Oracle. Você também pode encontrar Spring starters compatíveis para Oracle Database e OCI Services no Oracle Cloud Marketplace.

O Oracle Backend for Microservices and AI, uma nova plataforma lançada em junho de 2024, provisiona um "backend como serviço" com o Oracle Database e outros componentes de infraestrutura que operam em várias nuvens para permitir que os desenvolvedores criem e implementem microsserviços no Spring Boot e em outras estruturas. Ele simplifica a tarefa de criar, testar e operar plataformas de microsserviços e inclui um Sandbox de IA (revisão do desenvolvedor) para iteração e experimentação rápidas com RAG e técnicas ágeis com o Oracle Database 23ai. O Sandbox de IA pode gerar o código Spring AI Microservice que pode ser gerenciado e implantado no Oracle Backend for Microservices and AI, que fornece uma interface de linha de comando, um plug-in do Visual Studio Code (VS Code), um plug-in do IntelliJ, descoberta de serviço e gerenciamento de eventos.

Bottom line, Spring Boot é a escolha inteligente de código aberto. Ele permite que sua equipe de desenvolvimento escreva aplicativos de negócios complexos muito mais rápido do que usar o Spring Framework sozinho. Como o Spring Boot instala recursos, funções e bibliotecas externas de forma inteligente e as autoconfigura, seus desenvolvedores podem se concentrar em resolver o problema de negócios, onde o valor real do aplicativo é percebido.

Os modelos de IA detectam fraudes em tempo real, ajudam os pesquisadores de assistência médica a encontrar insights, analisar avaliações de clientes e sentimentos de mídia social e muito mais. O fio comum? Desenvolvimento inteligente que faz uso eficaz dos dados. Aprofunde-se em 10 casos de uso reais de IA.

Perguntas frequentes sobre Spring Boot

O que é Spring Boot e por que é usado?

Spring Boot é um framework de aplicativos que permite aos desenvolvedores Java aproveitar a poderosa arquitetura de quatro camadas do Spring Framework, mas é significativamente mais fácil de usar. Os benefícios são a melhoria da produtividade do desenvolvedor, a redução do tempo de implantação e a menor chance de erros devido aos recursos de autoconfiguração do Spring Boot.

O Spring Boot é um framework de back-end?

Spring Boot é um framework para a criação de aplicativos Java empresariais. É adequado para implementação na nuvem e on-premises e para criar web, microsserviços e software cliente/servidor. O Spring Boot engloba a funcionalidade front-end (lógica de apresentação e negócios) e back-end (abstração de persistência e conectividade de banco de dados).