Começando com SpringBoot 2

Hoje vamos criar uma aplicação Spring Boot 2 de forma bem didática e detalhada. Vamos expor um endpoint para nos dizer Hello World. É algo super simples e que em poucos minutos estará prontinho. Esse projeto será uma base para futuros projetinhos que temos em mente para o futuro do blog.

Nesse projeto utilizaremos as seguintes ferramentas e tecnologias:

  • IDE Spring tool Suite 4;
  • Spring Boot 2;
  • Spring Framework;
  • Maven;
  • Git;
  • Container Web tomcat.

Caso você seja novo no mundo da programação, vou deixar no final da matéria um pequeno dicionário técnico explicando alguns termos usados aqui. Surgindo alguma dúvida, não exite em me questionar nas redes sociais, caso eu não saiba algo de momento, correrei atrás da informação e aprenderemos juntos.

Não sabe o que é Spring Boot e pra que serve? Acesse esse link, nessa matéria explico o que é, como funciona e como surgiu o Spring Boot.

Criação do projeto

Podemos criar nosso projeto de duas formas, uma delas é utilizando o Spring Initializr. Para isso basta acessar o site https://start.spring.io/ e selecionar as configurações que quer em seu projeto, após clicar em generate e finalizar o download, basta importar o mesmo na IDE. 

Outra forma, que é como faremos nessa matéria, é criar nosso projeto pela IDE Spring Tool Suite, para isso, com a IDE aberta, basta clicar em File -> New -> Spring Starter Project  conforme imagem abaixo:

Preencha os campos abaixo, conforme o exemplo:

Selecione uma versão 2 do SpringBoot que não seja snapshot, inclua as dependências Spring WEB, Spring Boot DevTools e Spring Data JPA e clique em Finish.

Os projetos starters selecionados acima são para os fins descritos logo abaixo:

Spring WEB: É utilizado para criar aplicativos Web, incluindo RESTful, usando o Spring MVC. Usa o Apache Tomcat como o contêiner incorporado padrão

Spring Boot DevTools: Fornece reinicializações rápidas de aplicativos, LiveReload e configurações para melhorar a experiência de desenvolvimento.

Spring Data JPA: É utilizado para persistir dados em repositórios SQL com a API Java Persistence usando Spring Data e Hibernate.

A IDE realizará o build do projeto maven e as atualizações de todas suas dependências. Os pacotes do projeto e a classe que é usada para iniciar o aplicativo Spring ficarão similar a imagem abaixo:

Antes de Codar, precisamos fazer um leve ajuste no arquivo pom.xml. No momento da criação do projeto, declaramos que utilizariamos o Spring Data JPA, que sim, será útil nos projetos vindouros, mas para utilizar o mesmo, precisamos realizar configurações do datasource que não são o foco nesse momento, vamos comentar essa dependência como no exemplo apresentado abaixo e salvar o arquivo com Ctrl + S.

Agora sim, não demorou quase nada e já temos uma aplicação SpringBoot 2 que pode ser executada sem erros. Mas segura a emoção ai, rsrssrrs… por hora ela não faz nenhuma interação conosco. Para isso, vamos criar uma classe com o nome “HelloWorld” dentro do pacote br.com.devjava.helloworld. 

Com o cursor selecionando o pacote br.com.devjava.helloworld, pressionar Ctrl + N. Será aberta uma janela para selecionar o que de novo você quer criar, comece a escrever “C”, “L”, “A”, “S” … automaticamente é eliminado diversas opções, clique em Class e Next como na imagem abaixo:

Verifique se realmente o package está como br.com.devjava.helloworld. Preencha o nome da classe como HelloWorld e Finish.

Uma classe com o nome HelloWorld é criada. Acima do nome da classe utilizaremos as anotações @RestController e @RequestMapping(“/hello”). 

A anotação @RestController configura a classe como um Controller e que os métodos deverão retornar uma resposta HTTP, tornando-o possível trabalhar com serviços REST. Já a anotação @RequestMapping declara que a classe cuidará de solicitações da web e o parâmetro “/hello” define que qualquer ação desse controller deve preceder de /hello. Apenas como exemplo, as solicitações ou verbos do protocolo HTTP podem ser dos tipos GET, POST, PUT, DELETE, entre outros.

Posteriormente crie um método público do tipo String com o nome “sayHello”, esse método deve retornar a String “Hello from SpringBoot by DevJava”. Nesse método utilize a anotação @GetMapping, no caso, ela serve para especificarmos que esse método atenderá apenas o verbo GET do serviço /hello.

Sua Classe RestController deve se parecer com o exemplo abaixo: 

Feito isso, podemos entrar na classe HelloWorldApplication que possui o método main, clique com o botão direito em cima da classe, selecione Run As e depois Spring Boot App.

No console será exibido algo próximo a imagem abaixo:

Bazinga!!! Temos nosso App SpringBoot2 expondo o endpoint http://localhost:8080/hello. Acesse esse endpoint pelo navegador e verá a mensagem que configuramos ser apresentada.

Epilogo

Essa foi a nossa pequena aplicação em Spring Boot 2 apenas expondo um serviço, espero que tenha ficado bem detalhado e explicado, mas surgindo dúvida e ou sugestões, pode me contatar pelo campo de comentário logo abaixo ou trocar uma idéia comigo nas redes sociais.

Antes que eu me esqueça, disponibilizei o código desse projeto no meu GitHub pessoal, acesse: https://github.com/rafaelvcunha/HelloWorldSpringBoot2 

E como prometido, segue pequeno dicionário técnico:

IDE Spring tool Suite 4 é uma IDE desenvolvida em cima do Eclipse com algumas melhorias e plugins já instalados para o ecossistema Spring Framework.

Endpoint é a URL onde seu serviço pode ser acessado por uma aplicação cliente. 

Container Web é servidor web Java que atende aplicações web que utilizem Servlets e JSPs. 

Servidor de Aplicação: Além de possui o container web para atender  Servlets e JSPs, possui outros subsistemas para atender aplicações Java EE com EJBs, CDI, JMS entre outros. 

Compartilhe e curta:

O que é, como surgiu e como funciona o Spring Boot ?

O Spring Boot facilita a criação de aplicações, onde é possível criar um projeto apenas com os componentes necessários, com pouca ou nenhuma configuração e simplesmente executar. Isso mesmo, “just run”.

Mas antes de abordarmos esse framework maravilhoso, vamos falar do Spring Framework para entendermos o por que efetivamente foi criado o Spring Boot.

O que é o Spring Framework?

O Spring é um framework java open source criado pela Pivotal para facilitar o desenvolvimento de aplicações corporativas, baseado nos padrões de projeto de inversão de controle e injeção de dependência.

O Spring framework foi criado devido os problemas que os desenvolvedores java enfrentavam ao criar uma aplicação corporativa J2EE. Um dos problemas era a necessidade de utilizar um servidor de aplicação robusto, entre muitos outros fatores.

Mesmo com todas as facilidades que o Spring Framework trouxe, surgiram novos problemas. A configuração era via xml, dessa forma se algo estivesse incorreto, era uma dor de cabeça para descobrir o que deveria ser corrigido.

Posteriormente as configurações foram aceitas de forma programática, algo que ajudou demais, pois em tempo de compilação é reportado o que esta incorreto.

De qualquer modo, ainda era necessário configurar o arquivo de dependências pom.xml, o arquivo de configurações para banco de dados, o arquivo web.xml e por fim o container web.

Então nasce o Spring Boot!

Em abril de 2014, após 18 meses de desenvolvimento, testes e amadurecimento, a Pivotal entrega o Spring Boot 1.0. Hoje, a ultima versão estável em produção é a 2.2.4 e necessita no minimo do Java 8.

O seu objetivo é claro: Facilitar o trabalho de configuração e proporcionar ao desenvolvedor que sua aplicação seja publicada o mais rápido possível.

O spring boot foi baseado no conceito convenção sobre configuração, portanto é necessário apenas selecionar quais módulos serão utilizados no projeto. Exemplo de módulos são: WEB, DevTools, Spring Batch, Spring Data JPA, entre muitos outros.

O spring boot faz toda a magia, deixando tudo configurado, com um servidor tomcat embarcado. Em contra partida, há a possibilidade de customizar o que for necessário posteriormente.

Como funciona o Spring Boot por baixo dos panos?

O Spring boot consegue fazer tudo isso, devido seus três pilares, são eles o Spring Boot Starter, Spring Boot AutoConfigurator e Spring Boot Actuator.

Spring Boot Starter

O Spring Boot Starter tem o objetivo de associar diversas dependências em apenas uma, a fim de deixar o arquivo pom.xml mais organizado. Um exemplo é o spring-boot-starter-web, dentro dessa dependência há as dependências spring-boot-starter, spring-boot-starter-tomcat, hibernate-validator, jackson-databind, spring-web e spring-webmvc. Podem ou não haver diversas outras dependências dentro das apresentadas anteriormente.

Agora pense em configurar tudo isso na unha, incluindo dependência por dependência no pom.xml, fora que ficaria extremamente verboso seu arquivo, não é?

Spring Boot AutoConfigurator

O Spring Boot AutoConfigurator é o responsável por realizar as configurações da aplicação, incluindo as anotações necessárias para que a aplicação execute corretamente. Um exemplo é a anotação @SpringBootApplication presente na classe de inicialização do projeto.

Spring Boot Actuator

O Spring Boot Actuator fornece recursos de monitoramento, auditoria, healthcheck, provisionamento de endpoints, entre outros afazeres.

Um exemplo prático é o momento que o AutoConfigurator expõe o servidor web no localhost porta 8080. O Spring Boot Actuator que provisiona esta configuração no servidor web.

Criando um projeto Spring Boot

A Pivotal disponibiliza, duas formas rápidas e práticas para criar seu projeto Spring Boot. Pode ser realizado pelo Spring Initializr ou por meio da IDE Spring Tool Suite, desenvolvida em cima do Eclipse.

Spring Initializr

Basta acessar https://start.spring.io/ e selecionar as configurações que quer no seu projeto. O maior ponto de atenção vai para o campo “dependencies”, onde é possível selecionar os módulos starters que farão parte do projeto.

Após selecionar tudo, basta clicar no botão “Generate” que fica na parte inferior da pagina e importar o projeto na sua IDE de confiança… rsrssrsrs.

IDE Spring Tool Suite

Após iniciar a IDE, clique em File -> New -> Spring Starter Project, preencha os campos necessários e após o next, é possível selecionar os módulos starters. Depois disso é Finish and enjoy!!!

O poder do Spring Boot DevTools

O Spring Boot DevTools é um dos projetos starter que mais traz produtividade para o desenvolvedor. Caso seja feita qualquer alteração em suas classes e o container esteja em modo debug, a mesma é aplicada sem a necessidade de reiniciar o container manualmente.

Outra função do DevTools, é realizar configurações especificas para o ambiente de desenvolvimento, por exemplo não deixar que o cache lhe atrapalhe durante seus desenvolvimentos ou testes.

Epilogo

Bom, esse artigo ficou meio grandinho, mas acredito que é o necessário para entender sobre o Spring Boot e de quebra, conhecer também o Spring Framework. Agora é possível trocar umas figurinhas com o(a) coleguinha desenvolvedor(a) que senta ao lado no trabalho ou mesmo na faculdade.

Está afim de estudar linguagens e tecnologias presentes no ecossistema do desenvolvedor java gratuitamente? Se sim, acesse o link do post a seguir, lá apresento 5 sites fantásticos que nos proporcionam isso. Segue o link: https://www.devjava.com.br/sites-para-o-desenvolvedor-java-estudar-de-graca/

Muito obrigado por estar aqui, siga e curta nossas redes sociais e espalhe essa mensagem.

Compartilhe e curta: