Avançar para o conteúdo principal

O que é o Java Spring Boot?

Uma introdução ao Spring Boot, a popular ferramenta baseada em Java para desenvolver aplicações Web e microsserviços

O que é o Spring Boot?

O Java Spring Boot é uma ferramenta open-source que facilita a utilização de arquiteturas baseadas em Java para criar microsserviços e aplicações Web. Para qualquer definição do Spring Boot, o ponto de partida é o Java, uma das linguagens de programação e plataformas de computação mais populares e amplamente utilizadas para o desenvolvimento de aplicações. Programadores em todo o mundo começam o seu percurso de programação a aprender Java. Flexível e fácil de utilizar, o Java é uma linguagem favorita dos programadores para uma grande variedade de aplicações: desde aplicações de redes sociais, Web e jogos a aplicações de rede e empresariais.

Java e a framework Spring

Embora o Java possa 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 agravou-se significativamente. Isto deve-se ao número exponencial de variáveis com que os programadores modernos se deparam ao desenvolver aplicações Web ou aplicações móveis para tecnologias modernas comuns, como aplicações de transmissão em fluxo de música ou de pagamentos por telemóvel. Agora, um programador a escrever uma aplicação de linha de negócio básica 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. É compreensível que haja uma procura insaciável por quaisquer ferramentas que simplifiquem o desenvolvimento de aplicações Java, poupando tempo e dinheiro aos programadores.

Introduzir frameworks de aplicações - os grandes grupos de código pré-escrito que os programadores podem utilizar e adicionar ao seu próprio código, conforme ditam as suas necessidades. Estas frameworks aliviam a carga do programador para praticamente qualquer necessidade, quer esteja a desenvolver aplicações móveis e Web ou a trabalhar com computadores e APIs. As frameworks tornam a criação de aplicações mais rápida, fácil e segura ao fornecer código reutilizável e ferramentas para ajudar a relacionar os diferentes elementos de um projeto de desenvolvimento de software.

É aqui que o Spring entra em ação: o Spring é um projeto open-source que fornece uma abordagem modular simplificada para criar aplicações com Java. A família de projetos do Spring começou em 2003 como resposta às complexidades do desenvolvimento em Java inicial e fornece suporte para desenvolver aplicações Java. O nome Spring, por si só, refere-se normalmente à própria framework da aplicação ou a todo o grupo de projetos ou módulos. O Java Spring Boot é um módulo específico que é criado como uma extensão do framework Spring.

Assim, com esse contexto de como a framework Spring, o Spring Boot e o Java funcionam em conjunto, eis a definição do Spring Boot: a ferramenta que simplifica e acelera o desenvolvimento de aplicações Web e microsserviços na framework de Java, Spring.

Por vezes, como a linguagem e/ou a plataforma é Java, é referido como "Java Spring Boot", a "framework Java Spring" ou a "framework Spring Boot". No entanto, uma vez que existem outras frameworks de terceiros para Java, como Play e Hibernate, é mais preciso dizer "Spring" e "Spring Boot".

Para um debate de alto nível sobre as noções básicas do Java, consulte o artigo O que é o Java?

Qual é a diferença entre o Spring e o Spring Boot?

Conforme mencionado anteriormente, o Spring é uma framework de aplicações open-source baseada em Java que abrange muitos projetos mais pequenos. Outros projetos Spring populares incluem o Spring Data, o Spring Cloud e o Spring Security, para citar apenas alguns. Para compreender a diferença entre o Spring Boot e o Spring, é importante perceber que, embora possam existir diferenças nas capacidades principais, ambos os produtos estão inseridos na família Spring.

Para compreender totalmente as diferenças entre o Spring e o Spring Boot, primeiro teremos de definir alguns termos-chave.

O que são os microsserviços?

Os microsserviços são uma abordagem à arquitetura de desenvolvimento de software. O "micro" em microsserviços refere-se ao código entregue em partes ou componentes pequenos e manejáveis, e cada "serviço", ou função principal, é criado e implementado independentemente dos outros serviços. Os componentes independentes funcionam em conjunto e comunicam através de documentos de API prescritos denominados contratos. A pequena escala e o isolamento relativo destes microsserviços têm muitas vantagens. Por exemplo, uma vez que este tipo de arquitetura é distribuído e livremente emparceirado, não falha a aplicação inteira se um componente falhar. Outros benefícios são produtividade melhorada, manutenção mais fácil, melhor alinhamento comercial e maior tolerância a defeitos.

O que é a injeção de dependências?

A injeção de dependências (DI) é uma técnica de design utilizada para alcançar a inversão de controlo (IoC). Na programação orientada para objetos, como Java, os objetos que dependem de outros objetos são denominados dependências. Normalmente, o objeto recetor ou dependente chama-se cliente e o objeto de que o cliente depende chama-se serviço. Assim, a injeção de dependências passa o serviço para o cliente ou "injeta" a dependência com código denominado injetor. O DI elimina a necessidade de o cliente especificar que serviço utilizar, o injetor faz esse trabalho no lugar do cliente.

O que é convenção em vez de configuração?

A convenção em vez de configuração, por vezes denominada programação por convenção, é um conceito utilizado em frameworks de aplicações para reduzir o número de decisões que um programador tem de tomar. Adere ao princípio de "não se repetir" para evitar escrever código redundante. A programação por convenção empenha-se em manter a flexibilidade, ao mesmo tempo que permite que um programador só escreva código 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á simplesmente executada por predefinição sem ter de escrever ficheiros de configuração. O programador só terá de escrever explicitamente ficheiros de configuração se o comportamento pretendido se afastar da "convenção."

Framework Spring vs. Spring Boot

Uma vez que o Spring Boot foi criado com base nos benefícios da framework Spring, não é realmente uma questão de "este ou aquele", Spring vs Spring Boot, mas sim um benefício "tanto um como o outro". Não se trata, portanto, de uma questão de Spring vs Spring Boot, uma vez que o Spring e o Spring Boot coexistem:

Não disponível Spring Spring Boot
O que é? Uma framework de aplicações Web open-source baseada em Java. Uma extensão ou módulo criado com base na framework Spring.
Qual a sua finalidade? Fornece um ambiente flexível e totalmente configurável utilizando ferramentas e bibliotecas de código pré-criado para criar aplicações Web personalizadas e livremente emparceiradas. Fornece a capacidade de criar aplicações Spring autónomas que podem simplesmente ser executadas imediatamente sem a necessidade de anotações, configuração XML ou escrita de muito código adicional.
Quando devo utilizá-lo?

Utilize o Spring quando quiser:

  • Flexibilidade
  • Uma abordagem não dogmática.*
  • Para remover dependências do seu código personalizado.
  • Para implementar uma configuração muito invulgar.
  • Para desenvolver aplicações empresariais.

Utilize o Spring Boot quando quiser:

  • Facilidade de utilização
  • Uma abordagem dogmática.*
  • Para obter aplicações de qualidade a executar rapidamente e reduzir o tempo de desenvolvimento.
  • Para evitar escrever código reutilizável ou configurar XML.
  • Para desenvolver APIs REST.
Qual é a sua funcionalidade principal? Injeção de dependências Autoconfiguração
Tem servidores incorporados? Não. No Spring, terá de configurar os servidores explicitamente. Sim, o Spring Boot inclui servidores HTTP incorporados, como Tomcat e Jetty.
Como é configurado? A framework Spring fornece flexibilidade, mas a sua configuração tem de ser criada manualmente. O Spring Boot configura automaticamente o Spring e outras frameworks de terceiros seguindo o princípio "convenção em vez de configuração" predefinido.
Preciso de saber como trabalhar com XML? No Spring, é necessário ter conhecimento da configuração XML. O Spring Boot não requer configuração XML.
Existem ferramentas de CLI para dev/test de aplicações? A framework Spring por si só não fornece ferramentas de CLI para desenvolver ou testar aplicações. Como um módulo do Spring, o Spring Boot tem uma ferramenta de CLI para desenvolver e testar aplicações baseadas no Spring.
Funciona a partir de uma abordagem dogmática ou não dogmática? Não dogmática* Dogmática*

*Abordagem de framework dogmática contra não dogmática

Embora a palavra "dogmática" possa parecer negativa, tanto a abordagem dogmática do Spring Boot como framework Spring não dogmática têm as suas vantagens.

Abordagem dogmática

Uma abordagem dogmática assume a posição de que existe uma forma que é significativamente mais fácil do que todas as outras. O software limita intencionalmente os designers, incentivando-os a fazer as coisas dessa forma prescrita.

Fornece um caminho bem pavimentado, uma melhor prática que funcionará para a maioria das pessoas na maioria das situações. A aplicação é escrita respeitando rigorosamente estas melhores práticas e convenções comuns. Uma abordagem dogmática torna a colaboração e a obtenção de ajuda num projeto de programação muito mais fácil, uma vez que outros programadores que tenham experiência com essa framework terão familiaridade imediata com a nova aplicação e podem envolver-se imediatamente.

Abordagem não dogmática

Uma abordagem dogmática é 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 só forma certa para 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 frameworks dogmáticas têm o benefício de proporcionar muita flexibilidade no desenvolvimento e colocam mais controlo nas mãos dos programadores. A principal desvantagem com tanta flexibilidade é que o programador tem mais decisões a tomar e pode acabar por ter de escrever mais código porque a framework é tão flexível e, bem, dogmática.

Funcionalidades e benefícios do Spring Boot

Por fim, a parte entusiasmante: as principais capacidades que o Java Spring Boot fornece além da framework Spring. O Spring Boot proporciona um caminho mais fácil e rápido para configurar e executar aplicações. Elimina o trabalho pesado de configuração necessário para configurar a maioria das aplicações baseadas no Spring. Os programadores podem começar a utilizar o Spring Boot imediatamente sem terem de aprender a framework Spring subjacente.

Eis como as funcionalidades do Spring Boot ajudam a simplificar as tarefas de programação em Java. Algumas das principais funcionalidades do Spring Boot são:

  • Aplicações autónomas - O Spring Boot ajuda a criar aplicações que não são exclusivas de uma plataforma específica e que podem ser executadas localmente num dispositivo sem uma ligação à Internet ou outros serviços instalados para funcionarem.
  • Servidores incorporados - O Spring Boot permite-lhe incorporar servidores como o Tomcat, Jetty ou Undertow diretamente.
  • Abordagem dogmática - O Spring Boot simplifica as configurações de compilação ao fornecer dependências de início 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 fornece 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 torna muito mais fácil desenvolver aplicações baseadas no Spring com Java. A sua abordagem dogmática à framework Spring diminui o tempo gasto em decisões e tarefas repetitivas e liberta tempo para se concentrar na criação e teste das aplicações.
  • Diminui a necessidade de escrever código reutilizável, anotações e configuração XML - Não é necessário que os programadores gerem código, configurem XML ou sequer aprendam a framework Spring, se não quiserem.
  • Integra aplicações na família de projetos Spring - As aplicações Spring Boot integram-se homogeneamente com outros projetos no ecossistema da framework Spring, como Spring Data, Spring Cloud, Spring Security, bem como com outros serviços cloud fidedignos, como o Microsoft Azure Spring Cloud.
  • Fornece ferramentas de dev/test - Com a ferramenta de interface de linha de comandos (CLI) e os servidores HTTP incorporados do Spring Boot, torna-se muito simples criar ambientes para programar/testar aplicações baseadas no 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 de automatização de compilação populares, como o Apache Maven.

Tutoriais do Java Spring Boot

Se já estiver familiarizado com a criação de aplicações com a framework Spring, provavelmente achará fácil aprender o Spring Boot com os tutoriais, os arranques de projetos e a documentação fornecidos nesta secção. No entanto, eis algumas boas notícias se estiver com pressa para utilizar o Spring Boot, mas ainda não conhece a framework: é possível aprender, e trabalhar com o Spring Boot antes de aprender a framework Spring, uma vez que irá aprender muitas das noções básicas da framework pelo caminho. Embora isto não lhe ensine tudo o que há para saber sobre a framework, irá dar-lhe uma boa vantagem se decidir aprendê-la mais tarde.

Outra vantagem de aprender Spring Boot, além de tornar o desenvolvimento de aplicações muito mais rápido e eficiente, é que também o prepara para poder utilizar outras capacidades do Spring, nomeadamente Spring Data, Project Reactor e Spring Security.

Dito isto, será mais fácil seguir o seu primeiro tutorial do Spring Boot se aprender primeiro como os conceitos básicos de injeção de dependências e inversão de controlo funcionam na framework Spring. Eis uma de visão geral de alto nível:

Injeção de dependências

  • Baseado em XML, ou seja, <beans/> e <namespace:*/>
  • Baseado em anotações, ou seja, @Component, @Autowired, @Inject
  • Com base em Java, ou seja, classes @Configuration, métodos @Bean

Inversão de controlo (IoC)

  • ApplicationContext - a interface de raiz que serve como contentor de IoC do Spring
  • BeanFactory - a interface para aceder ao contentor Spring
  • Beans - os objetos em instâncias, montados e geridos pelo ApplicationContext

Tutoriais do Java Spring Boot para principiantes

Depois de dominar as noções básicas, se quiser criar e implementar aplicações Spring Boot em escala, pondere explorar o serviço do Azure Spring Cloud totalmente gerido da Microsoft e do VMware. Em alternativa, comece já com este tutorial sobre como proteger as suas aplicações Spring Boot com certificados TLS/SSL.

Criar e ajudar a proteger uma aplicação Java

Crie uma aplicação Java com o Spring Initializr utilizando o arranque do Spring Boot para o Azure Active Directory (Azure AD).

Implementar a sua primeira aplicação no Azure Spring Cloud

Saiba como criar, aprovisionar e monitorizar uma aplicação Spring Boot simples criada com o Spring Initializr.

Criar um microsserviço Spring Boot simples

Crie e implemente um microsserviço simples e, em seguida, aprenda a adicionar tecnologias do Spring Cloud ao mesmo.

Mais arranques do Spring Boot

Adicione funcionalidades de armazenamento, segurança, autenticação e de cofre de chaves às suas aplicações Spring Boot.

FAQ

  • O Spring Boot é uma framework Web Java open-source baseada em microsserviços disponibilizada pelo Spring, particularmente útil para engenheiros de software que desenvolvem aplicações Web e microsserviços.

    Saiba mais

  • O "Spring Boot em Java" é outra forma de dizer "Java Spring Boot", os dois termos podem ser utilizados alternadamente. O Java é a linguagem e a plataforma, o Spring é a framework de aplicações baseada no Java, o Spring Boot é uma extensão da framework Spring, com algumas vantagens adicionais.

    Saiba mais

  • O Spring Boot tem a funcionalidade da framework geral do Spring, mas o Spring Boot não requer que aprenda Spring. Um programador pode pôr uma aplicação a funcionar em menos tempo porque os atributos do Spring Boot são configurados automaticamente e a abordagem dogmática remove grande parte do código e da configuração reutilizáveis envolvidos no desenvolvimento e implementação de aplicações Spring.

    Saiba mais

  • Sim, como mencionado acima, o Spring Boot é particularmente útil para uma abordagem de microsserviço à arquitetura de desenvolvimento de software. Os microsserviços são uma forma popular de criar pequenas equipas autónomas que podem trabalhar de forma independente, e pela sua própria natureza, os microsserviços só funcionam no back-end.

    Saiba mais

  • Tempo de desenvolvimento reduzido, maior produtividade e facilidade de utilização são apenas alguns dos benefícios de desenvolver aplicações Spring Boot.

    Saiba mais

  • Existem muitos tutoriais, inícios rápidos e documentação no Site do Spring bem como Arranques do Spring Boot e documentação do Microsoft Azure. Se quiser começar imediatamente a implementar aplicações Spring Boot, veja o webinar Acelerar as Aplicações Spring Boot para a Cloud em Escala..

    Saiba mais

Estamos prontos para começar. Vamos configurar a sua conta gratuita do Azure

Como podemos ajudá-lo?