Primeiras aulas do curso Spring Boot Parte 1: Construa uma API Rest

Spring Boot Parte 1: Construa uma API Rest

Introdução ao Spring Boot - Introdução

Oi, pessoal. Bem-vindos ao treinamento de API rest com Spring boot. Meu nome é Rodrigo Ferreira, sou um dos instrutores da Alura e o instrutor que vai acompanhar vocês neste treinamento.

Neste treinamento, vamos utilizar o Spring boot, um framework para Java bastante popular que pode ser utilizado tanto para a construção de aplicações web tradicionais, ou API REST, que são muito utilizadas no modelo de arquitetura de micro serviços.

É um framework bem popular, não só no Brasil, como no mundo inteiro, e vamos aprender como construir uma API REST completa. Vamos construir essa API do zero, usando o site do Spring initializr, para gerar o projeto, e vamos montar nossa API, que vai ser baseada no fórum da Alura. O domínio da nossa aplicação será o fórum da Alura.

Você, como aluno, já deve conhecer, talvez ter postado alguma dúvida, ajudado outro aluno. Vamos implementar essa lógica para listar os tópicos que foram cadastrados, cadastrar novos tópicos, atualizar, excluir, fazer o cadastro listagem atualização e exclusão, com validação, usando o bin validation, e a parte de persistência vai ser feita com JPA, mas utilizando um módulo do Spring boot, que é o Spring boot data JPA, que deixa muito fácil e simples a camada de persistência da aplicação.

Também vamos aprender sobre boas práticas para escrever um código nesse tipo de aplicação, que segue o modelo REST. Espero vocês nessa jornada, em um primeiro vídeo, onde vamos criar nossa aplicação do zero.

Introdução ao Spring Boot - Hello World

Vamos começar então nosso treinamento de construção de APIs REST usando Spring Boot. A primeira coisa que precisamos fazer é criar nosso projeto. Tenho o Eclipse aberto. Como vai ser um projeto utilizando o Maven, poderíamos ir ao menu file, new, Maven Project, e teríamos a tela para digitar as informações do Maven, depois teríamos que abrir o arquivo .xml, declarar as dependências do Spring Boot, e faríamos isso tudo manualmente.

Como é um pouco chato e é sempre igual, o próprio pessoal do Spring criou um site que é um gerador de projetos com Spring Boot, chamado Spring initializr. No caso, vamos utilizar esse site, porque é muito mais simples, rápido e prático.

O site é o start.spring.io. O site vai te pedir algumas informações sobre o seu projeto. Por exemplo, ele te pergunta se você quer criar um projeto usando Maven ou Gradle. Algumas pessoas preferem o Gradle. Qual a linguagem de programação. O Spring Boot suporta as linguagens Java, Katlin ou Groovy. A versão do Spring Boot, e algumas informações do projeto.

Na data de criação do treinamento, a versão estável é a 2.1.4. No curso, é essa que vamos utilizar. O recomendado é que vocês utilizem o download do projeto que vamos disponibilizar, que já vem com essa versão, para garantir que não haverá nenhum problema.

Embaixo, tem as informações a respeito do projeto que o Maven precisa, quem é o group id e o artifact id. No nosso caso, vai ser br.com.alura e o artifact fórum. Tem um botão depois para algumas opções a mais, descrição, pacote, mas a princípio vamos deixar no padrão. E por fim temos o campo para adicionar as dependências do Spring Boot que você quer utilizar no seu projeto. Para fins didáticos, vamos deixar, por enquanto, só o módulo web. Mas, no mundo real, você vai usar o módulo de segurança, da JPA, e já vai adicionando na hora de gerar seu projeto.

No fim, temos o botão verde para gerar o projeto. Quando você clicar, você verá que ele vai fazer o download de um arquivo zip. Esse zip nada mais é do que o projeto com a estrutura do Maven. A ideia é descompactar, e feito isso voltamos ao Eclipse, e clicamos em import, depois na subopção “existing maven projects”. No campo browser, escolhemos a pasta onde foi feita o download, damos o finish, e ele vai importar o projeto.

Na primeira vez que você fizer isso, ele vai baixar as dependências do projeto, do Spring Boot, da internet, dependendo da sua conexão pode demorar. Assim que ele importou, você vai observar que nada mais é do que um projeto na estrutura do Maven. Tem os diretórios, tudo certo.

Vamos abrir o pom.xml, é um arquivo importante do nosso projeto. Tem as informações que digitamos no site. Repare que a primeira tag que ele coloca é “parent”. É a tag que ele usa para herdar do pom.xml do Spring Boot. Esse é o jeito de dizer que você quer usar o Spring Boot no projeto. Você herda, declara na tag o pom.xml do Spring Boot. Se não estivéssemos usando o site, teríamos que digitar manualmente.

Depois tem a versão do Java, que por padrão é o 1.8. E depois as dependências que adicionamos no último campo. No caso, eu só escolhi a web. Já veio uma de testes automatizados por padrão porque o Spring considera que você vai fazer testes automatizados no seu projeto. Por último, o plugin para fazer o build do projeto.

O que vamos mexer no arquivo futuramente é só ir à tag dependências e adicionar as outras dependências que utilizaremos posteriormente.

Além disso, no src/main/Java, ele criou um pacote de acordo com a estrutura que nós definimos e a classe chamada fórumApplication, que é o nome do projeto. É uma classe, que tem um método main, que chama o método run da classe SpringApplication. Essa classe tem a anotação @springbootapplication. Essa é a classe que vamos utilizar para rodar nosso projeto. Nele, nós não adicionamos o servidor separado e incluímos o projeto nele. Para rodar o projeto, rodamos a classe main e ele tem um Tomcat embutido que roda para subir nossa aplicação.

Vou rodar para fazer uma demonstração. Você vê que ele vai imprimir algumas coisas e gerar o log: Tomcat inicializado na porta 8080. Então, ele tem um Tomcat embutido e por padrão roda a 8080. Isso é configurável também.

Vamos fazer o teste para ver se está funcionando. Vou entrar no localhost:8080. Deu uma tela de erro, que é a tela de erro do Spring Boot. Deu erro justamente porque o endereço não está mapeado. Mas se apareceu essa tela, significa que o Spring Boot está funcionando.

Só para garantir que está tudo ok, vamos fazer nosso famoso Hello World. Vou criar um controller, mapear para o endereço barra, e ver se o Spring vai chamar o endereço.

Para criar um controller, vou criar uma nova classe, ctrl+n, class, vou trocar o pacote para controller, e o nome da classe vai ser “Hello controller”. Você anota depois a classe com a @controller, para o Spring conseguir encontrar essa classe, e ele que vai fazer o gerenciamento da classe. Depois, nós só temos que fazer o import da anotação que vem do pacote do Spring. E vou criar um método: @RequestMapping(“/”) @ResponseBody public string Hello() { return “Hello World!”;

Tenho que colocar em cima do método @RequestMapping só para dizer qual é a url, quando o Spring vai chamar esse método. No exemplo, vou colocar /. Então, se eu chamar localhost8080, ele tem que cair nesse método e devolver essa string.

Como eu não quero navegar para uma página, tenho que colocar mais uma anotação, que é o @ResponseBody. Senão, o Spring vai considerar que o retorno é uma página que vai procurar essa página no nosso projeto. Colocando o @ResponseBody ele devolve a string direto para o navegador.

Vou salvar. Tenho que parar o projeto, abrir a classe main e rodar de novo. Vou dar um refresh na página. Perceba que apareceu o Hello World!, então funcionou. Assim, temos nosso projeto criado, nosso Hello World, tudo funcionando. Podemos começar a desenvolver nossa API de fato.

Introdução ao Spring Boot - Sobre Spring e Spring Boot

Neste vídeo, vou falar um pouco sobre a história do Spring e do Spring Boot. Ele é na verdade opcional. Não vamos implementar nada na nossa API, e caso você já conheça um pouco a história do Spring, do Spring Boot, ou não tenha interesse, você pode pular esse vídeo normalmente e assistir o próximo.

O Spring é um dos frameworks mais antigos do Java, foi criado em 2002, 2003, e até hoje está firme e forte no mercado, cada vez mais popular e sendo utilizado por desenvolvedores Java não só no Brasil, mas no mundo inteiro.

O Spring foi desenvolvido por um desenvolvedor chamado Rod Johnson. Naquela época, o pessoal utilizava muito para desenvolver aplicações corporativas, com Java, o Java EE, que era até chamado J2EE. dentro do J2EE você tinha algumas tecnologias, como RMI, JB, dentre outras, que eram um pouco complexas, e muitos desenvolvedores acabavam sofrendo quando iam desenvolver aplicações grandes, que precisavam ter uma boa performance e boa escalabilidade. Não por culpa do J2EE em si, mas por mal uso, por não conhecer boas práticas.

O Rod era um especialista em J2EE. Ele sabia muito bem das armadilhas e como montar uma boa arquitetura, robusta, escalável, de fácil manutenção. Ele teve essa visão, viu essa dificuldade, baseado nas consultorias que ele prestava, e teve a ideia de escrever um livro. Então, ele escreveu, dando dicas de como montar uma arquitetura escalável, robusta, performática, usando o J2EE, sem cair nas armadilhas do mercado.

O livro que ele escreveu se chama Expert one-on-one: J2EE Design and development. É um livro que ficou bem famoso. Além de mostrar esses problemas do J2EE e como você poderia montar uma boa arquitetura, ele também mostrava algumas das dificuldades e coisas ruins do J2EE em si. Ele apresentou no livro dele um código, como se fosse uma biblioteca alternativa. Nesse livro, ele escreveu mais de trinta mil linhas de código.

Posteriormente, junto com o livro, foi publicado um fórum onde as pessoas podiam discutir e fazer o download da biblioteca. Várias pessoas começaram a baixar e utilizar nos projetos. Alguns desenvolvedores deram uma ideia para o Rod: por que não pegamos esse código, transformamos em uma biblioteca e lançamos no mercado gratuitamente, para ser uma alternativa ao J2EE?

Depois, alguns desenvolvedores se reuniram com ele e eles foram criando essa biblioteca, que foi publicada em 2003, sendo que a versão 1.0 saiu em 2004. Assim nasce o Spring framework.

A ideia do Spring era ser uma alternativa a esse modelo complexo do J2EE. O grande foco dele era em simplicidade de código. O coração do Spring foi todo baseado naquela ideia, nos padrões de inversão de controle e injeção de dependências. Com isso, o seu código, a sua lógica de negócio, sua regra não precisava correr atrás das dependências da infraestrutura. Nós invertíamos o controle e a infraestrutura chegava de bandeja para o seu código, para que ele seja fácil de manter, desacoplado.

Esse foi o coração do Spring. E isso agradou muito os desenvolvedores, que conseguiam implementar seu sistema com classes Java seguindo o padrão POJO, classe simples, sem ter muita dependência de infraestrutura, nem nada muito complexo.

Com isso, o Spring acabou se tornando popular, foi evoluindo e desenvolvido também em módulos. Você tinha o módulo central de IOC, inversão de controles, e em volta dele você tinha alguns módulos, como MVC, o módulo de segurança, de transação. Inclusive, ele até suportava o JavaEE. Ele se integra com tecnologias como JPA, e como o bean validation, que veremos no curso. Então, era uma alternativa, mas nunca foi um concorrente, nunca quis substituir o J2EE. Sempre quis ser um complemento. Inclusive, ele utiliza muitas das tecnologias do JavaEE.

Ele foi evoluindo, foram surgindo novos módulos. Enquanto isso, o JavaEE também foi evoluindo. Foram surgindo outras tecnologias, o EJB, que era o grande coração do J2EE, que dava muito problema, muita dor de cabeça. Foram surgindo outras tecnologias e frameworks no mercado, como JSF, Wicket, depois o CDI, dentre outras coisas. Mas aí o JavaEE acabou dando uma esfriada, tendo alguns problemas, ficando para trás. Em 2013, 2014, o pessoal do Spring criou o Spring Boot, que foi um projeto que revolucionou o desenvolvimento para Java e que fez o Spring alavancar de novo no mercado.

A ideia do Spring Boot é que você consiga desenvolver uma aplicação sem o uso de um container, sem ser o desenvolvimento tradicional, em que você precisa ter sua aplicação e roda ela dentro de um servidor. Quando você termina de desenvolver, você gera um WAR e joga ele dentro de um servidor. A ideia é inverter esse processo. Temos um servidor embutido e rodamos a aplicação em um main. Conforme vamos ver no curso, o nosso projeto vai ser inicializado por uma classe main.

Com isso, não preciso mais gerar um WAR. Posso gerar o build da minha aplicação como sendo um JAR, que é muito mais leve e mais simples de ser executado. Isso acabou indo de encontro com ideias fortes no mercado, como a de desenvolvimento de micro serviços. O pessoal utiliza muito o Spring Boot para montar micro serviços, como o API REST. Se você tem uma API REST, para desenvolver com o Spring Boot é uma mão na roda, porque além de ter essas ideias e do contêiner ser embutido, o Spring Boot também simplificou muito uma coisa muito chata no Spring, que é a parte de configuração.

Quando o Spring começou, toda a parte de configuração era feita via XML. você tinha um XML gigantesco configurando zilhões de coisas. Depois eles evoluíram e trouxeram o suporte para anotações, mas mesmo assim você tinha que criar várias classes com vários Beans configurados com anotações. Ficava algo muito complexo. Para você criar um projeto do zero, você gastava um tempão só para fazer a parte de configuração.

A ideia do Spring Boot é que muitas coisas já vêm configuradas por padrão para você. Você consegue criar um projeto e inicializá-lo de uma maneira muito rápida, muito produtiva, o que atraiu as empresas a utilizarem o Java.

O Spring Boot foi evoluindo, e está hoje firme e forte no mercado como sendo o principal framework utilizado por desenvolvedores Java para construir aplicações REST, usando micro serviços, containers, vai de encontro com a ideia de usar o Spring Boot, uma aplicação Java leve, simples, rodando dentro de um container, usando o Docker, por exemplo. Tudo isso acabou casando com as tendências de mercado. Graças a isso o Spring disparou, o Boot foi o que fez o Spring disparar no mercado.

O Java EE acabou decaindo. Não morreu, mas caiu em desuso. Hoje, é bem difícil ver um projeto sendo desenvolvido com Java EE. O pessoal prefere utilizar o Spring, Spring Boot, Spring Cloud, que é um conjunto de bibliotecas que foram utilizadas para montar micro serviços e ter toda aquela infraestrutura de micro serviços.

Um grande case é o caso da Netflix, que tem vários projetos que o Spring Boot simplificou muito. Essa é a história do Spring e do Spring Boot. Por isso recomendamos fortemente, se você é um desenvolvedor Java, você vai trabalhar com desenvolvimento de aplicações Java, vai montar uma API REST, vai trabalhar com micro serviços, Spring Boot e Spring Cloud é o canal, é o que está sendo utilizado no mercado, tanto no Brasil quanto no exterior.

Neste treinamento, vamos cobrir um pouco do Spring Boot, vamos desenvolver nossa API REST e você vai estar por dentro de como ele é utilizado para esse objetivo. Valeu por assistir esse vídeo. No próximo a gente continua a trabalhar na nossa aplicação.

Sobre o curso Spring Boot Parte 1: Construa uma API Rest

O curso Spring Boot Parte 1: Construa uma API Rest possui 186 minutos de vídeos, em um total de 56 atividades. Gostou? Conheça nossos outros cursos de Java em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Java acessando integralmente esse e outros cursos, comece hoje!

  • 1150 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1150 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1150 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1150 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana