Criando Aplicação Fullstack do Zero com Java Spring e React - Parte 1: Desenvolvimento do Backend
235.63k views6925 WordsCopy TextShare
Fernanda Kipper | Dev
Neste tutorial, vamos construir juntos uma aplicação fullstack do zero usando Java Spring, React e P...
Video Transcript:
P sejam bem-vindos ao meu canal para quem não me conhece eu sou a E hoje nós vamos construir essa aplicação FC nesse primeiro vídeo a gente vai desenvolver a nossa ap usando jav Spring e post como banco de dados e na parte dois a gente vai desenvolver esse frontend e conectar com a Nosa api Esse vdeo foi pedido pelo pesso lá no meu Instagram então se você tem alguma sugestão de vídeo ou alguma dvida Não deixa de me seguir por lá também então sem mais enrolação Bora pro vídeo [Música] Então pessoal a primeira coisa que a gente precisa fazer para criar a nossa api Rash né usando Java e Spring é entrar no spring initializer e eu já vou explicar para vocês o que que é isso a gente vai vir aqui no Google eu vou botar Spring initializer e esse primeiro link aqui o que que esse link vai fazer ele vai nos ajudar né agilizar a criar o nosso projeto Spring normalmente o pessoal confunde o Spring com o Spring boot o Spring foi um Framework Java criado em meados de 2002 pra criação né de aplicações em Java e ele é dividido em vários módulos um desses módulos é o módulo mvc né que é usado para criar aplicações web que é justamente o que a gente vai criar hoje porém o Spring exigiu uma extensa configuração por ele ser todo modularizado né ter separado suas partes assim em módulos era uma configuração bem extensa que a gente precisava para fazer tanto para configurar o próprio Spring quanto para configurar os módulos né de dependência que a gente iria utilizar E aí em 2014 surgiu um novo módulo do Spring que é o chamado Spring boot que surgiu justamente para agilizar essa configuração né esse start de uma aplicação Spring e aqui nesse site no spring initializer a gente justamente vai fazer isso a gente vai criar a nossa aplicação Spring de forma bem r rápida só setando algumas configurações aqui e ele já vai nos gerar o arquivo do projeto Spring já configurado pra gente só começar a programar Então a primeira coisa que a gente vai fazer é escolher o nosso gerenciador de pacotes eu vou escolher o maven que é bem usado na comunidade é o que eu costumo utilizar a linguagem que a gente vai usar vai ser o Java aqui vocês podem ver que a gente pode usar com cotlin ou Groove e aqui a gente tem que escolher a versão do Spring boot a versão que eu vou usar é essa aqui que já tá pré-selecionada que é a 3 0. 4 outra coisa que a gente precisa selecionar também é a versão do nosso Java eu vou usar a versão 17 e aí tem essa configuração aqui que acaba confundindo muita gente né O que que é isso daqui isso aqui é configuração PR pro nosso módulo né da nossa aplicação ã depois também conseguir baixar dependências então isso aqui é basicamente uma configuração ali do mav né pra gente conseguir baixar as dependências do nosso projeto ter a configuração certinha dos módulos ali da das passas dentro do nosso projeto então aqui a gente normalmente bota o nome da nossa aplicação o nome aqui da nossa aplicação hoje vai ser cardápio nada demais não vou estressar aqui nesse nome o artifact vai ser cardápio também V aqui até que quando eu mudei ele replicou PR os outros lugares e aqui podemos deixar desse jeito e aqui a descrição é cardápio digital isso aqui não importa muito e agora a gente vai escolher qual o os módulos que a gente vai usar no nosso projeto a gente vai clicar aqui adicionar dependência e vamos escolher todos os que a gente quer que já venham configurados na nossa aplicação Spring então o primeiro que eu vou escolher é esse Spring boot Dev Tools que é basicamente pra gente conseguir usar o Reload automático então toda vez que a gente mudar alguma coisa ali na nossa api a gente salva E aí ele já dá um Reload automático E já começa a servir com aquela nova atualização que a gente fez o outro pacote que a gente vai escolher É esse aqui o Spring web que é justamente para criar aplicações web né junto com Spring Então a gente vai selecionar ele aqui também e o último pacote que a gente vai escolher é o lombok vou escrever fica mais fácil lombok o que que é esse lombok ele ajuda a criar boiler Plate de Java então o Java às vezes pode se tornar muito verboso assim o Java com Spring então pra gente não precisar ficar criando por exemplo todos os getters todos os setters dentro da nossa Classe A gente vai usar o loock que ele nos ajuda através de uma anotação que a gente coloca em cima da nossa classe ele já vai gerar alguns métodos automaticamente para nós em runtime Então por enquanto é isso depois a gente vai adicionar mais módulos né na nossa aplicação Mas os que a gente precisa agora são esses daqui e o que a gente vai fazer é vir aqui clicar em generate e ele vai gerar para nós o pacote né do nosso projeto ele baixou aqui um zip para mim então vou clicar aqui para vocês verem então aqui no meus downloads já tá o cardapio p Zip que é a nossa aplicação que foi gerada aqui pelo Spring initializer eu vou clicar aqui duas vezes para descompactar e aqui a gente já tem a pasta com todos os arquivos do nosso projeto Então pessoal agora o que a gente vai fazer é explorar essa configuração que o Spring initializer fez para nós e começar a desenvolver a nossa aplicação eu já abri aqui a minha ide eu tô usando intelij Eu recomendo que vocês usem também porque o intelij é uma ideia bem popular na comunidade Java e ela das várias vantagens quando a gente utiliza em conjunto com a nossa aplicação Spring então eu recomendo que vocês usem o intelij também vocês vão abrir a ideia de vocês vão clicar em abrir um novo projeto e vão abrir aquela pasta ali que a gente descompactou que a gente fez o download do site do Spring iniz Então a gente vai est aqui e a primeira coisa que a gente vai fazer a gente vai clicar nesse cantinho aqui na direita onde diz maven e a gente vai ver aqui que o maven já identifica que a gente tem um projeto aqui que é o projeto cardápio a gente vai clicar nesse cardápio e vai vir aqui em life cycle a gente vai clicar de novo e vai vir aqui em package o que que isso aqui vai fazer ele vai instalar as dependências do nosso projeto Então a gente vai dar dois cliques e a gente vai ver aqui que ele vai abrir o terminal para mim e vai iniciar a instalação das dependências pronto a gente pode ver aqui que o maven já finalizou e finalizou com sucesso aí agora a gente vai ver aqui ó que dentro desse mesmo menuzinho aqui tem essa opção dependências quando a gente clica duas vezes nela a gente vai ver que ele lista todas as dependências que tem dentro do nosso projeto então aqui a gente pode ver ó o Spring boot Starter web Spring boot Dev Tools que a gente escolheu lá o lombok o Spring boot Starter T catch e o Starter test vocês podem ver que algumas dessas dependências aqui por exemplo essa do tcat a gente não adicionou lá no nosso Spring initializer isso aqui veio por default por quê Porque é justamente essa configuração que o próprio Spring initializer né o Spring boot faz para nós então a gente não vai precisar configurar nada de Tun quete e etc ele já vem configurado para nós Vou mostrar aqui para vocês também rapidinho onde é que fica né o arquivo que lista as dependências do nosso projeto aqui nos projetos Java fica dentro desse pom. xml né onde ele lista aqui todas as dependências do projeto e agora Vamos explorar os outros arquivos do nosso projeto a gente pode ver aqui que a gente tá dentro do projeto cardápio e aqui tem a pasta source a gente vai entrar dentro dessa pasta source a gente vai ver aqui que tem a pasta Main e teste teste vai ser o é onde ficariam os nossos testes unitários e Main é onde está localizada a nossa aplicação aí aqui dentro da pasta Java vai ser Onde ficam os arquivos Java e resources seriam arquivos tipo imagens ou outros arquivos que a nossa aplicação poderia servir por exemplo se a nossa aplicação tivesse com um template Engine talvez Servindo um HTML poderia ficar dentro desses resources enfim mas como que a gente vai fazer uma uma API rest que vai se comunicar com o nosso frontend a gente não vai usar essa pasta aqui também a gente vai se concentrar aqui na pasta Java e aqui dentro da pasta Java a gente vê que tem esta outra pasta com pon exemple pon cardápio que era justamente Aquele nomezinho que tava lá quando a gente estava configurando o maven né junto com o Spring initializer então ele já colocou aqui né o nome do módulo da nossa aplicação que é esse p.
exemplo. cardápio E aí por fim a única a última coisa que a gente precisa ver aqui é esse arquivo cardapio application que é o arquivo de start da nossa aplicação Então a nossa aplicação inicia nesse arquivo aqui a gente pode ver que essa aplicação tá com uma anotação de spring boot application ou seja essa anotação indica que essa classe é a a nossa aplicação Spring boot Então ela é a entrada de tudo ela é o começo de tudo E aí Aqui tem a nossa o nosso método M que seria o ponto de start da nossa aplicação e dentro desse método m a gente pode ver que ele chama o Spring application. run passando a nossa classe cardapio application então a gente tá chamando o Spring pedindo para ele rodar essa nossa aplicação cardapio application e a última coisa que a gente vai fazer antes de colocar a mão na massa é habilitar o Reload automático no nosso intelij Então quem nunca mexeu né nunca configurou o seu intelij precisa fazer essa configuração pela primeira vez Então a gente vai vir aqui em intelij preferences e ele vai abrir aqui o as configurações de preferência do nosso editor de texto A gente vai vir aqui em Build execution deployment compiler e vai habilitar esse checkbox aqui ó build Project automatically Então eu quero que ele builde o meu projeto automaticamente eu vou clicar em apply beleza mas não é só isso a gente vai ter que vir aqui em Advanced também Advanced settings e clicar nesse checkbox aqui que é allow automate to start even if development application SC Running a gente vai dar o OK aqui no meu já estava habilitado só Tô mostrando para vocês vai dar o OK e pronto agora o a nossa aplicação vai estar pronta para rodar junto com o Dev Tools e ter o Restart automático então o primeiro arquivo que a gente vai criar vai ser o Controller né onde vai concentrar os requests para pegar os nossos dados do cardápio e também adicionar novas novas informações né no nosso banco de dados eu vou vir aqui no pon com exemple cardapio vou clicar com o botão direito New javac aí eu vou dar o nome aqui de food Controller esse food Controller a gente não vai deixar no módulo root da nossa aplicação a gente não vai deixar em P com p exemple p cardápio a gente vai deixar em ponto Controller e a gente vai ver aqui que ele vai indicar um erro para nós a gente vai botar o mouse em cima clicar aqui em more Actions e vai pedir para ele criar o módulo Controller então move package to ex P Controller move aí onde é que vai ficar esse Controller vai ficar aqui dentro de Main java com Controller Ok E aí a gente pode ver aqui que Ele criou uma nova pasta Controller para nós e moveu esse nosso arquivo ali para dentro agora a gente precisa indicar pro pro Spring que essa nossa classe é um Controller como é que a gente vai fazer isso a gente vai usar a anotação rest Controller então rest Controller ele vai importar automático aqui para mim isso aqui basicamente tá dizendo pro Spring ó essa minha classe aqui é um Controller da nossa aplicação Beleza então mapeia ela lá nos contr só que só mapear que é um Controller não basta a gente precisa informar Spring Qual é o end Point que esse Controller controla né Qual é o endp aqui que essa classe é responsável o end Point vai ser o end Point food Então a gente vai fazer request mapping então que que quer dizer request mapping eu t mapeando o request que vai cair nesse contrer Eo requ que for end food primir Prim endp que a gente vai criar é o endp de get da nossa aplicação é onde o front lá vai bater barra get food e ele vai me retornar todos os Foods que estão no banco de dados então pra gente fazer isso a gente vai criar aqui nossa classe Public por enquanto eu vou deixar o retorno dela como void mas depois a gente vai mudar isso aqui e o nome vai ser get All o nome do nosso método para pegar todos os dados que estão dentro do nosso banco de dados só que só colocar um método dentro do nosso Controller não é o suficiente pro Spring entender o que quando esse método deve ser chamado Então a gente vai indicar para ele que esse método é chamado quando esse end Point for chamado com o método get então a gente já mapeou aqui que o end Point desse Controller é food e agora a gente tá indicando pro Spring ó quando bater nesse end Point food com o método get tu vai usar esse método aqui da minha classe esse método aqui vai ser executado beleza só que agora a gente precisa né conectar com o nosso banco de dados pegar as informações que estão lá dentro e retornar aqui nesse endp como é que a gente vai fazer isso bom a primeira coisa que a gente precisa fazer é adicionar mais algumas bibliotecas na nossa aplicação mais algumas dependências porque só essas que a gente tem não são suficientes pra gente conseguir fazer a conexão com o nosso banco de dados e né o manuseio das informações que estão ali dentro do nosso banco então como é que a gente vai adicionar dependências agora f como é que eu vou fazer aqui eu mexo n spom XML né eu vou escrevendo aqui dependence vou e vou chutando Qual é o nome da dependência não a gente vai usar um truquezinho que é assim então a gente vai voltar aqui pro site do Spring unzer só que em vez de configurar todo um projeo novo a gente só vai vir aqui em dependencies e vamos procurar as dependências que a gente precisa A primeira é o Java JPA que é para fazer a persistência e manuseio de dados né SQL com o Java Spring e a próxima dependência que a gente precisa é o driver do postgress que é para conseguir conectar a nossa aplicação com o banco de dados dos posts pronto adicionad essas du dependências a gente vai vir aqui em explore e ele vai abrir aqui para nós como se fosse o nosso projeto né aqui os arquivos que que ele geraria para nós Opa aqui eu tenho que trocar paraa maven que ele não tá com a configuração de projeto maven troquei pra maven vou vir em explore clicar e aqui a gente vai copiar a declaração dessas duas dependências que a gente quer adicionar que é o posts e o JPA e a gente vai colar aqui no nosso pum p XML então depois da nossa última dependência aqui eu vou inserir o JPA e o postgress Então pessoal eu tava tendo um erro aqui na hora de inicializar minha aplicação Ele tava dando um erro do JPA na hora de iniciar o JPA Ele tava dizendo que não tava conseguindo inicializar e tava parando o start da aplicação e o que eu fiz foi vir aqui no maven eu cliquei aqui e cliquei nesse Reload Zinho e ele conseguiu inicializar a aplicação perfeitamente Então se vocês tiverem algum erro parecido se vocês verem aqui no log o erro do JPA alguma coisa que não conseguiu startar vocês tentem fazer esse Reload que talvez tenha sido só o maven ali se perdeu na hora de instalar as novas dependências do nosso projeto pronto e com as nossas dependências instaladas a gente vai começar a configuração pra conexão com o nosso banco de dados Então a primeira coisa que a gente precisa fazer é entrar aqui na nossa pasta resources e application P properties aqui vão ficar mapeados a URL do nosso banco de dados o username e a senha eu já tinha deixado copiado aqui eu vou sacar mas eu vou explicar para vocês olha só eu tô declarando aqui pro Spring que o meu datasource.