O que é o Spring Boot?
O Java Spring Boot é uma ferramenta open source que simplifica a utilização de estruturas baseadas em Java para criar microsserviços e aplicações Web. Quando se define o Spring Boot, é impossível não falar logo de Java, uma das linguagens de programação e plataformas informáticas mais populares e mais utilizadas no desenvolvimento de aplicações. Os programadores do mundo inteiro começam a sua jornada de programação a aprender Java. Mais flexível e fácil de utilizar, a linguagem Java é a preferida dos programadores para uma série de aplicações: desde aplicações Web, de redes sociais e de jogos a aplicações de rede e empresariais.
Java e a estrutura do Spring
Apesar de Java poder ser fácil de utilizar e mais fácil de aprender do que outras linguagens, o nível de complexidade para criar, depurar e implementar aplicações Java atingiu patamares muito elevados. Isto deve-se ao número exponencial de variáveis com que os programadores modernos se deparam quando desenvolvem aplicações para dispositivos móveis ou aplicações Web para tecnologias modernas comuns, como transmissão de música ou aplicações para dispositivos móveis de pagamento em dinheiro. Hoje em dia, um programador que escreve uma aplicação básica de linha de negócio tem de lidar com várias bibliotecas, plug-ins, bibliotecas de registo e tratamento de erros, integrações com serviços Web e várias linguagens, como C#, Java, HTML, entre outras. Como é compreensível, existe uma procura insaciável de ferramentas que simplifique o desenvolvimento de aplicações Java, de modo a poupar tempo e dinheiro aos programadores.
Conheça as estruturas de aplicações, isto é, um grande conjunto de código previamente escrito que os programadores podem utilizar e adicionar ao próprio código, conforme as necessidades. Estas estruturas aliviam a carga do programador em praticamente todos os casos, quer estejam a desenvolver aplicações Web e para dispositivos móveis ou a trabalhar com computadores e APIs. As estruturas tornam a criação de aplicações mais rápida, fácil e segura ao disponibilizarem código reutilizável e ferramentas que ajudam a integrar os vários elementos de um projeto de desenvolvimento de software.
É aqui que entra o Spring: o Spring é um projeto open source que apresenta uma abordagem simplificada e modular em relação à criação de aplicações com Java. O grupo de projetos Spring começou em 2003 como resposta às complexidades dos primórdios do desenvolvimento Java e fornece suporte para o desenvolvimento de aplicações Java. O nome Spring, por si só, refere-se geralmente à própria estrutura da aplicação ou a todo o grupo de projetos ou módulos. O Java Spring Boot é um módulo específico que foi criado como uma extensão da estrutura do Spring.
Depois de saber como a estrutura do Spring, o Spring Boot e o Java funcionam em conjunto, esta é a definição do Spring Boot: é uma ferramenta que simplifica e acelera o desenvolvimento de aplicações Web e microsserviços na estrutura do Java, o Spring.
Às vezes, como a linguagem e/ou a plataforma é Java, esta é denominada "Java Spring Boot", "estrutura do Java Spring" ou "estrutura do Spring Boot." No entanto, como existem outras estruturas de terceiros para Java, como o Play e Hibernate, é mais correto dizer "Spring" e "Spring Boot".
Consulte este artigo para uma análise mais aprofundada dos conceitos básicos de Java: O que é o Java?
Qual é a diferença entre o Spring e o Spring Boot?
Como mencionado anteriormente, o Spring é uma estrutura de aplicação open source baseada em Java que engloba vários projetos mais pequenos sob a sua alçada. Entre os projetos mais populares do Spring figuram o Spring Data, o Spring Cloud e o Spring Security, só para citar alguns. Para compreender a diferença entre o Spring Boot e o Spring, é importante perceber que, embora possa haver diferenças em termos de funcionalidades essenciais, tudo faz parte da família Spring.
Para compreender totalmente as diferenças entre o Spring e o Spring Boot, é necessário definir primeiro alguns termos-chave.
O que são os microsserviços?
Os microsserviços consistem numa abordagem à arquitetura de desenvolvimento de software. O termo "micro" em microsserviços refere-se ao facto de o código ser apresentado em pequenas partes ou componentes que podem ser geridas e de cada "serviço" ou função principal ser criado e implementado de forma independente dos outros serviços. Os componentes independentes trabalham em conjunto e comunicam através de documentos API prescritos, designados por contratos. A pequena escala e o relativo isolamento destes microsserviços apresentam muitos benefícios. Por exemplo, uma vez que este tipo de arquitetura é distribuída e relativamente interligada, a aplicação no seu todo não se desintegra se um componente falhar. Além disso, a produtividade é melhorada, a manutenção é mais fácil, o alinhamento comercial é melhor e a tolerância a falhas é maior.
O que é a injeção de dependência?
A injeção de dependência (DI) é uma técnica de design utilizada para obter a inversão de controlo (IoC). Na programação orientada para objetos como Java, os objetos que dependem de outros objetos são designados como dependências. Geralmente, o objeto recetor ou dependente é designado por cliente e o objeto do qual o cliente depende é designado por serviço. Desta forma, a injeção de dependência transfere o serviço para o cliente ou "injeta" a dependência através de um código chamado injetor. A DI faz com que o cliente não precise de especificar que serviço deve utilizar, uma vez que o injetor assume essa responsabilidade.
O que é a convenção em detrimento da configuração?
A convenção em detrimento da configuração, também designada por programação por convenção, é um conceito utilizado em estruturas de aplicações para reduzir o número de decisões que um programador tem de tomar. Este conceito adota a máxima "evite repetições" para não escrever código desnecessário. A programação por convenção tenta manter a flexibilidade, o que permite a um programador escrever código apenas para os aspetos não convencionais da aplicação que está a criar. Quando o comportamento pretendido da aplicação corresponde às convenções estabelecidas, a aplicação será executada por predefinição sem que seja necessário escrever ficheiros de configuração. O programador só terá de escrever explicitamente ficheiros de configuração se o comportamento pretendido divergir da "convenção".
Estrutura do Spring vs. Spring Boot
Spring | Spring Boot | |
---|---|---|
O que é? | Uma estrutura de aplicação Web open source baseada em Java. | Uma extensão ou módulo desenvolvido com base na estrutura do Spring. |
Para que serve? | Oferece um ambiente flexível e completamente configurável, com ferramentas e bibliotecas de código pré-criado, para criar aplicações Web personalizadas e relativamente interligadas. | Oferece a capacidade de criar aplicações Spring autónomas que podem ser executadas imediatamente sem a necessidade de anotações, configuração XML ou de escrever muito código adicional. |
Quando é que o devo utilizar? | Utilize o Spring quando quiser:
| Utilize o Spring Boot quando quiser:
|
Qual é a funcionalidade principal? | Injeção de dependência | Configuração automática |
Tem servidores incorporados? | Não. No Spring, terá de configurar os servidores de forma explícita. | Sim, o Spring Boot inclui servidores HTTP incorporados, como o Tomcat e o Jetty. |
Como é configurado? | A estrutura do Spring oferece flexibilidade, mas a respetiva configuração tem de ser criada manualmente. | O Spring Boot configura o Spring e outras estruturas de terceiros automaticamente pelo princípio predefinido "convenção em detrimento de configuração". |
Tenho de saber como trabalhar com XML? | No Spring, são necessários conhecimentos de configuração XML. | O Spring Boot não requer configuração XML. |
Existem ferramentas CLI para aplicações de desenvolvimento/teste? | A estrutura do Spring, por si só, não fornece ferramentas CLI para desenvolver ou testar aplicações. | Como um módulo do Spring, o Spring Boot tem uma ferramenta CLI para desenvolver e testar aplicações baseadas em Spring. |
Funciona com uma abordagem dogmática ou flexível? | Flexível* | Dogmática* |
* Abordagem de estrutura dogmática vs. flexível
Embora a palavra "dogmática" possa soar vagamente negativa, tanto a abordagem dogmática do Spring Boot como a abordagem flexível da estrutura do Spring têm as suas vantagens.
Abordagem dogmática
Uma abordagem dogmática parte do princípio de que existe uma forma que é significativamente mais fácil do que todas as outras. Por predefinição, o software limita os designers, sendo que os incentiva a fazer as coisas dessa forma recomendada.
Apresenta um caminho sólido, uma melhor prática que irá servir para a maioria das pessoas na generalidade das situações. A aplicação é escrita com base nestas melhores práticas e convenções generalizadas. Uma abordagem dogmática simplifica muito a colaboração e a obtenção de ajuda para um projeto de programação, sendo que os outros programadores que tenham experiência com essa estrutura terão uma familiaridade instantânea com a nova aplicação e poderão começar imediatamente.
Abordagem flexível
Uma abordagem flexível é adotada se todas as soluções exigirem aproximadamente a mesma quantidade de esforço ou complexidade. Assume a posição de que não existe uma única forma correta de chegar a uma solução para um problema. Em vez disso, fornece ferramentas flexíveis que podem ser utilizadas para resolver o problema de várias formas. As estruturas flexíveis têm a vantagem de proporcionar muita flexibilidade no desenvolvimento e permitem um maior controlo por parte dos programadores. A principal desvantagem de tanta flexibilidade é que o programador tem mais decisões a tomar e pode acabar por ter de escrever mais código porque a estrutura é tão livre e, digamos, flexível.
Funcionalidades e benefícios do Spring Boot
Por fim, a parte mais interessante: as principais funcionalidades que o Java Spring Boot apresenta além da estrutura do Spring. O Spring Boot oferece um caminho mais fácil e rápido para definir, configurar e executar aplicações. Ele não requer o esforço intenso de configuração que é necessário para configurar a maioria das aplicações baseadas em Spring. Os programadores podem começar a utilizar o Spring Boot sem ter de se familiarizar com a estrutura do Spring subjacente.
Vejamos como as funcionalidades do Spring Boot ajudam a simplificar as tarefas de programação Java. Seguem-se algumas das principais funcionalidades do Spring Boot:
-
Aplicações autónomas: o Spring Boot ajuda a criar aplicações que não estão associadas a uma plataforma específica e que podem ser executadas localmente num dispositivo sem uma ligação à Internet ou outros serviços instalados para serem funcionais.
-
Servidores incorporados: .o Spring Boot permite-lhe incorporar diretamente servidores como o Tomcat, o Jetty ou o Undertow.
-
Abordagem dogmática: o Spring Boot simplifica as configurações de compilação ao disponibilizar dependências de arranque dogmáticas.
-
Configuração automática: o Spring Boot configura automaticamente o Spring e outras bibliotecas de terceiros sempre que possível.
-
Funcionalidades prontas para produção: o Spring Boot disponibiliza funcionalidades prontas para produção, como métricas, verificações de estado de funcionamento e configuração externalizada.
Benefícios do Spring Boot
Spring Boot:
-
Reduz o tempo de desenvolvimento e aumenta a produtividade: o Spring Boot simplifica muito o desenvolvimento de aplicações baseadas em Spring com Java. A sua abordagem dogmática em relação à estrutura do Spring reduz o tempo gasto em decisões e tarefas repetitivas e liberta tempo para se concentrar na criação e no teste das aplicações.
-
Reduz a necessidade de escrever código repetitivo, anotações e configuração XML: os programadores não precisam de gerar código ou configurar XML ou mesmo de se familiarizar com a estrutura do Spring, se não o quiserem fazer.
-
Integra aplicações no grupo de projetos Spring: as aplicações Spring Boot integram-se perfeitamente noutros projetos do ecossistema da estrutura do Spring, como o Spring Data, o Spring Cloud e o Spring Security, bem como noutros serviços de nuvem fiáveis, como o Microsoft Azure Spring Cloud.
-
Fornece ferramentas de desenvolvimento e teste: com a ferramenta de interface de linha de comandos (CLI) do Spring Boot e os servidores HTTP incorporados, é muito fácil criar ambientes para desenvolver/testar aplicações baseadas em Spring.
-
Oferece plug-ins e ferramentas para facilitar o desenvolvimento: o Spring Boot oferece plug-ins para poder trabalhar com bases de dados dentro da memória, bem como outras ferramentas populares de automatização de compilação, como o Apache Maven.
Tutoriais do Java Spring Boot
Se já estiver familiarizado com a criação de aplicações através da estrutura do Spring, é provável que seja fácil para si familiarizar-se com o Spring Boot através de tutoriais, de iniciadores de projetos e de documentação fornecida nesta secção. No entanto, há boas notícias se quiser começar a utilizar já o Spring Boot, mas ainda não conhece a estrutura. É possível aprender o Spring Boot (e começar a trabalhar com o mesmo) antes de aprender a estrutura do Spring, uma vez que irá aprender muitos dos fundamentos da estrutura à medida que avança. Embora isto não lhe ensine tudo o que há para saber sobre a estrutura, dar-lhe-á uma excelente base caso decida continuar a aprendizagem mais tarde.
Além de tornar o desenvolvimento de aplicações muito mais rápido e eficiente, outro benefício de conhecer o Spring Boot é que este também permite a utilização de outras funcionalidades do Spring, nomeadamente o Spring Data, o Project Reator e o Spring Security.
Injeção de dependência
- Baseada em XML, ou seja, <beans/> e <namespace:*/>.
- Baseada em anotações, ou seja, @Component, @Autowired, @Inject.
- Baseada em Java, ou seja, @Configuration classes, @Bean methods.
Inversão do controlo (IoC)
- ApplicationContext: a interface de raiz que funciona como o contentor IoC do Spring.
- BeanFactory: a interface para aceder ao contentor do Spring.
- Beans: os objetos instanciados, montados e geridos por ApplicationContext.
Tutoriais do Java Spring Boot para principiantes
Crie e ajude a proteger uma aplicação Java
Crie uma aplicação Java com o Spring Initializr, ao utilizar o iniciador (starter) do Spring Boot para o Microsoft Entra ID (anteriormente conhecido como Azure Active Directory).
Implemente a sua primeira aplicação no Azure Spring Cloud
Aprenda a criar, aprovisionar e monitorizar uma aplicação Spring Boot simples criada com o Spring Initializr.
Crie um microsserviço Spring Boot simples
Crie e implemente um microsserviço simples e, em seguida, aprenda a incluir tecnologias do Spring Cloud no mesmo.
Mais iniciadores do Spring Boot
Adicione funcionalidades de armazenamento, segurança, autenticação e cofre de chaves às suas aplicações do Spring Boot.
FAQs
-
O Spring Boot é uma estrutura Web em Java open source e baseada em microsserviços disponibilizada pela Spring, sendo particularmente útil para engenheiros de software que desenvolvem aplicações Web e microsserviços.
-
Dizer "Spring Boot em Java" é o mesmo que dizer "Java Spring Boot". Os dois termos podem ser usados de forma intercambiável. Java é a linguagem e a plataforma, Spring é a estrutura de aplicação baseada em Java e Spring Boot é uma extensão da estrutura do Spring, com alguns benefícios adicionais.
-
O Spring Boot tem a funcionalidade da estrutura geral do Spring, mas o Spring Boot não exige que o utilizador se familiarize com o Spring. Um programador pode implementar uma aplicação em menos tempo porque os atributos do Spring Boot são configurados automaticamente e a abordagem dogmática dispensa uma grande parte do código repetitivo e da configuração associados ao desenvolvimento e à implementação de aplicações do Spring.
-
Sim, como já foi referido, o Spring Boot é particularmente útil no âmbito de uma abordagem de microsserviços em relação à arquitetura de desenvolvimento de software. Os microsserviços são uma forma comum de criar equipas pequenas e autónomas que podem trabalhar de forma independente e, em virtude da sua própria natureza, os microsserviços só funcionam em back-end.
-
A redução do tempo de desenvolvimento, o aumento da produtividade e a facilidade de utilização são apenas alguns dos benefícios do desenvolvimento de aplicações do Spring Boot.
-
Existem muitos tutoriais, guias de início rápido e documentação no site do Spring , bem como a documentação e iniciadores do Spring Boot do Microsoft Azure. Se quiser começar imediatamente a implementar aplicações do Spring Boot, veja o webinar, Accelerate Spring Boot Applications to Cloud at Scale.