Prévia do material em texto
Professor: Marlon Silva Ferreira E-mail: marlon.ufpe@gmail.com Spring Boot ■ Spring é um framework java open source criado pela Pivotal ■ Surge para facilitar o desenvolvimento de aplicações corporativas ■ O Spring framework foi criado devido os problemas que os desenvolvedores java enfrentavam ao criar uma aplicação corporativa J2EE ■ Ao longo do tempo, a ferramenta foi evoluindo, melhorando problemas e estabelecendo padrões de construção Introdução - O que é 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 última versão estável em produção é a 2.2.4 e necessita no mínimo do Java 8. ■ 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. ■ O spring boot faz toda a magia, deixando tudo configurado, com um servidor tomcat embarcado. ■ Há a possibilidade de customizar o que for necessário posteriormente. Introdução - O que é o Spring Boot? 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. ■ Podem ou não haver diversas outras dependências dentro das apresentadas anteriormente. Introdução - O que é o Spring Boot? 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. Introdução - O que é o Spring Boot? 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. Introdução - O que é o Spring Boot? fonte: https://www.devjava.com.br/ Para poder usar o IDE do Spring Boot, basta acessar o site oficial https://spring.io/ Há três possibilidades de usabilidade do framework em IDE’s. ■ No Eclipse ■ No VS Code ■ No Theia IDE e Framework - Como usar? Quando usamos o framework Spring Boot, usamos algumas ferramentas já embutidas que facilitam a criação de aplicações de forma mais facilitada e com menos codificação, ou seja, menos “verboso”. IDE e Framework - Como usar? Usaremos a versão do Spring para o Eclipse 1. Primeiro baixe do site do Spring.io a versão x64 para windows IDE e Framework - Como usar? 2. Após baixar, clique duas vezes e espere ele descompactar a pasta sts-versao.RELEASE Clique duas vezes, ele irá descompactar IDE e Framework - Como usar? Clique duplo 2. Dentro da pasta sts-versao.RELEASE Clique duas vezes, ele irá abrir o programa IDE e Framework - Como usar? Clique duplo! 3. Ao entrar no programa, vá em file>new>Spring Starter Project IDE e Framework - Como usar? 4. Deverá configurar: a. name = nome do projeto b. Type = Maven Project c. Java Version = preferência o 11 d. Packing = Jar e. Group = br.com.primeiroprojeto f. package = br.com.primeiroprojeto.webserver g. o resto pode deixar padrão IDE e Framework - Como usar? Vamos por partes: 1. O que fizemos? a. Quando escolhemos o Maven Project, escolhemos a forma de importação das API’s. 2. Qual a função dele? a. O Maven é uma ferramenta de gerenciamento e automação de construção (build) de projetos. Entretanto, por fornecer diversas funcionalidades adicionais através do uso de plugins e estimular o emprego de melhores práticas de organização, desenvolvimento e manutenção de projetos, é muito mais do que apenas uma ferramenta auxiliar. IDE e Framework - Apache TomCat 5. Aqui, instalaremos as dependências do Maven necessárias para instalarmos um webserver a. Basta buscar por a depenência DevTools e a Spring Web IDE e Framework - Como usar? Vamos por partes: 1. O que fizemos? a. Usamos alguns “starters” para dar algumas funcionalidades possíveis do spring boot.Qual a função dele? 2. Qual a função dele? a. É com eles que nós acessamos os famosos API’s, que serão responsáveis por facilitar algumas implementações de código. Os starters serão colocados nas dependências do Maven. IDE e Framework - Starters 6. Vá aba Boot Dashboard a. Basta escolher o seu projeto e apertar o primeiro botão IDE e Framework - Como usar? Vamos por partes: 1. O que fizemos? a. O próprio Spring Boot tem um botão para acionar a montagem do servidor, podendo colocar múltiplos servidores em portas diferentes. IDE e Framework - Como usar? 7. Pronto, seu primeiro webserver está feito, para ver o resultado, basta clicar com o botão direito em cima do projeto no mesmo Boot Dashboard e ir em Open Web Server IDE e Framework - Como usar? 8. Parabéns! Seu primeiro server não “server” para nada! IDE e Framework - Como usar? Agora montaremos uma segunda prática, faremos: Nesta prática, criaremos um site que irá montar um simples formulário para o nome de um usuário, apenas o nome e exibir o nome a partir do banco de dados. 1. Primeiro precisamos criar um novo projeto IDE e Framework - Cadastro de um usuário 1. Ao entrar no programa, vá em file>new>Spring Starter Project IDE e Framework - Cadastro de um usuário 2. Deverá configurar: a. name = cadastro b. Type = Maven Project c. Java Version = preferência o 11 d. Packing = Jar e. Group = br.com.cadastro f. package = br.com.cadastro.webserver g. o resto pode deixar padrão IDE e Framework - Cadastro de um usuário IDE e Framework - Cadastro de um usuário 3. Deverá chamar os starters: a. JPA - Basicamente, o JPA ajudará a fazer a injeção em banco de dados (salvar os dados no banco, ou puxar dele) b. WEB - Para habilitar o Spring a criar um servidor local c. MySQL - Para poder usar banco de dados baseados nessa linguagem de consulta. d. H2 - API que permite o acesso de um banco dados baseado em MySQL, e que será usado para persistência do nome do usuário IDE e Framework - Cadastro de um usuário 3. Deverá chamar os starters: e. Thymeleaf - Responsável de se comunicar com a view e poder renderizar as informações do banco de dados, além de fazer o caminho inverso, transmitir os dados do view para o injetor do banco de dados. f. Dev Tools - Responsável por reiniciar o servidor local em caso de salvamento e alterações de código. 4. Selecionados os starters, confirme com o finish IDE e Framework - Cadastro de um usuário 5. Após confirmação, essa árvore de pasta será criada IDE e Framework - Cadastro de um usuário 5. O mais importante sobre a árvore de pastas é saber sobre: a. src/main/java - Ficam todas as classes da aplicação, desde a responsável por rodar o app, até a parte de modelamento de dados, controle de rotas e injeção em banco de dados. b. src/main/resources - Ficam as pastas responsáveis pelo View do app, as telas em HTML, arquivos de CSS e JS estáticos das telas. Além das imagens eventualmente usadas e propriedades de configuração do server, como link de comunicação com o banco de dados e suas regras IDE e Framework - Cadastro de um usuário 5. O mais importante sobre a árvore de pastas é saber sobre: c. pom.xml - É o arquivo de registro das dependências instaladas como Starters com o Maven, podendo ser editados para remoção ou adição de novas dependências, de acordo com a necessidade de mudança. IDE e Framework - Cadastro de um usuário 6. Já conhecendo as pastas, o primeiro passo a se realizar é a criação da tela de cadastro, que será apenas um input do tipo texto em html, não precisaremos do css, mas fique à vontade. 7. Minhatela ficou assim: IDE e Framework - Cadastro de um usuário IDE e Framework - Cadastro de um usuário 7. Minha tela de cadastro de nomes IDE e Framework - Cadastro de um usuário 8. Antes de tudo, teremos que criar a rota da tela no servidor, para isso, teremos que criar um novo package a. Dentro da pasta src/main/java teremos uma pasta com a aplicação central do app, chamada de nomeDoProjetoApplication.java IDE e Framework - Cadastro de um usuário 8. Antes de tudo, teremos que criar a rota da tela no servidor, para isso, teremos que criar um novo package b. Clique no package dele, vá em new e clique em package IDE e Framework - Cadastro de um usuário 8. Antes de tudo, teremos que criar a rota da tela no servidor, para isso, teremos que criar um novo package c. Ao aparecer essa página, devemos modificar o package para br.com.primeiroapp.controller IDE e Framework - Cadastro de um usuário 8. Antes de tudo, teremos que criar a rota da tela no servidor, para isso, teremos que criar um novo package d. Como já dito, precisamos criar a rota e ela faz parte do que chamamos de controller, que nada mais é que a parte de gerenciamento dos “links” que o site possui. e. Dentro do novo package, criaremos uma classe chamada Controller.java IDE e Framework - Cadastro de um usuário (Controller) Criando rotas: ● A rota do servidor que criamos é, por padrão, localhost:8080, podendo ser alterado, mas não faremos. ● Quando queremos acessar http://localhost:8080/, se não tivermos uma rota para o destino “/”, o servidor não encontrará a página inicial que criamos ● Para que isso ocorra, essa classe Controller terá que retornar um view (tela). IDE e Framework - Cadastro de um usuário (Controller) Criando rotas: IDE e Framework - Cadastro de um usuário (Controller) Criando rotas: IDE e Framework - Cadastro de um usuário (Controller) @Annotations são considerados metadados, ou seja, dados sobre dados. Tentando simplificar mais, são informações que indicam como cada classe, ou campo de código devem ser interpretados pela aplicação. Resumidamente, os annotations informam ao compilador e a aplicação o que cada classe faz, e para que cada método, ou comando especial serve. É uma semântica de comunicação para construção da aplicação. IDE e Framework - Cadastro de um usuário (Controller) Para a construção da tela, informamos quais annotations precisamos usar: 1. Primeiro digitamos o @RestController, que informa que a classe será considerada como um controlador de rotas. 2. Segundo, por fim, usamos o @RequestMapping, que informa que tipo de mapeamento queremos usar, no nosso caso foi o método GET da verbação do HTTP. a. Ex: GET, POST, UPDATE, DELETE e PATCH. IDE e Framework - Cadastro de um usuário (Controller) Além disso, usamos o thymeleaf com a criação de um método ModelAndView, no qual queremos linkar nossa tela de index.html inicial como a tela inicial do localhost:8080/, por isso, ao acessar a porta 8080, de cara, teremos a tela criada como tela inicial. ModelAndView constroem um objeto que será montado para direcionar pelo setViewName para a tela do index.html. IDE e Framework - Cadastro de um usuário (Model) Para montar o model, criaremos uma classe que terá características do objeto. Ou seja, pensemos sobre o que um Usuario possui: ■ ID de identificação ■ Nome de Usuário No nosso primeiro exemplo, apenas isso é o fundamental. Logo, tem-se que montar a Classe, que, no exemplo, será chamado de Usuario. IDE e Framework - Cadastro de um usuário (Model) Para montar o model, criaremos um IDE e Framework - Cadastro de um usuário (Model) Para montar o model, criaremos um 1 2 3 IDE e Framework - Cadastro de um usuário (Model) Logo, o model do Usuario deve ter algumas annotations que definirão a construção da classe. ■ @Entity cria uma entidade, ou seja, uma tabela no banco de dados com o nome da classe, que é Usuario. ■ @Id defino que uma das colunas da tabela será chamada id e será uma chave primária ■ @GeneratedValue diz como o id será gerado, Identity é um formato de geração, o mais usado. ■ @column cria uma coluna chamada nome, IDE e Framework - Cadastro de um usuário (Model) Além da Classe, precisamos dos Getters e Setters dela. IDE e Framework - Cadastro de um usuário (Model) Além da Classe, precisamos dos Getters e Setters dela. IDE e Framework - Cadastro de um usuário (Controller) 1 3 5 2 4 1 IDE e Framework - Cadastro de um usuário (Controller) 1. @Autowired - É uma anotação que cria um objeto que se comunica diretamente com injetor do repositório para poder inserir as informações no banco de dados. 2. @GetMapping é o análogo ao @RequestMapping, só que diretamente relacionado ao method GET 3. Agora deve-se adicionar um objeto da Classe do MODEL Usuario, para que o mesmo possa ser passado para o VIEW do index.html IDE e Framework - Cadastro de um usuário (Controller) 4. @PostMapping é o análogo ao @RequestMapping, só que diretamente relacionado ao method POST 5. Essa anotação (@Valid) serve para indicar que o objeto será validado tendo como base as anotações de validação que atribuímos aos campos. IDE e Framework - Cadastro de um usuário (View) IDE e Framework - Cadastro de um usuário (View) 1 2 3 4 IDE e Framework - Cadastro de um usuário (View) O Thymeleaf servirá de apoio para transportar os objetos do controller (rotas) até o view (a página de exibição de dados, formulários, etc.). Para entender como usar a sintaxe (conjunto de regras) do Thymeleaf, é necessário compreender que: 1. th:action=”@{/cadastrar}” a. Vai criar um action dentro do form que irá mandar para o caminho “/cadastrar”, assim que o botão for clicado. 2. O método de verbo HTTP que deve-se usar para cadastro é o POST IDE e Framework - Cadastro de um usuário (View) 3. th:object=${usuario} - Cria um objeto da classe Usuario e o coloca disponível para renderização no VIEW a. Após criar o objeto de parsing (passagem de string), o spring boot permite o uso do objeto no corpo do site 4. O método de verbo HTTP que deve-se usar para cadastro é o POST 5. th:field=”*{nome}” - O field serve para ligar o input do nome do usuário ao objeto que será enviado ao repositório pelo controller. IDE e Framework - Cadastro de um usuário (DAO - Repository) 1 IDE e Framework - Cadastro de um usuário (DAO - Repository) Outra coisa que precisamos construir é o package br.com.primeiro-app.repository. Nele, teremos a injeção do repositório no banco de dados, provocando a persistência deles no banco de dados do H2. Para isso usamos uma Classe, geralmente, com o mesmo nome da Classe do Model, mas com o acréscimo do sufixo Repository. Essa classe é herdeira da JpaRepository, que já automatiza os códigos de comunicação com o banco de dados. Agora, o objetivo é criar uma página que será a listagem de usuários: Para isso, temos que criar uma rota de redirecionamento. Assim que o botão cadastrar for clicado, o site será redirecionado a página de listagem. IDE e Framework - Cadastro de um usuário (DAO - Repository) IDE e Framework - Cadastro de um usuário (Controller) IDE e Framework - Cadastro de um usuário (Controller) 1 2 3 IDE e Framework - Cadastro de um usuário (Controller) 1. O primeiro é a rota do controller para o site inicial, como já sabemos 2. O segundo é a rota do controller para a confirmação de cadastro (pelo botão de cadastrar), ele salva o usuário com o comando usuarioRepository.save(usuario) e retorna um chamado de redirecionamento (redirectView). 3. O terceiro é a rota de listagem dos nomes de usuários, uma tabela que será alimentada a cada confirmação de cadastro. IDE e Framework - Cadastro de um usuário (View) IDE e Framework - Cadastro de um usuário (View) 1 3 5 2 4 IDE e Framework - Cadastro de um usuário (View) 1. Recebe, do controller, um vetor de objetos chamado usuarios,que será todo varrido e a cada item contido nele jogará, para cada ocorrência, dentro de uma variável usuario e 2. Será colocado o id (usuario.id) num td da tabela 3. E o nome (usuario.nome) do usuário em outro td da tabela 4. Criaremos um link que será o encaminhamento para as rotas de edição do usuário 5. E de exclusão do usuário. IDE e Framework - Cadastro de um usuário (Controller) IDE e Framework - Cadastro de um usuário (Controller) 1 2 3 1 2 3 IDE e Framework - Cadastro de um usuário (Controller) 1. A rota do editar vem com o id do usuário atrelada ao link. 2. É no link que a annotation @PathVariable obterá o valor do id e poderá usar para achar 3. O usuário na busca do banco de dados, com o comando usuarioRepository.findById(id). IDE e Framework - Cadastro de um usuário (Controller) 1. A rota do deletar vem com o id do usuário atrelada ao link. 2. É no link que a annotation @PathVariable obterá o valor do id e poderá usar para achar 3. O usuário na busca do banco de dados e deletá-lo, com o comando usuarioRepository.deleteById(id). IDE e Framework - Cadastro de um usuário (MVC - Model View Controller) Primeira Aplicação Web Pronta! Professor: Marlon Silva Ferreira E-mail: marlon.ufpe@gmail.com Dúvidas?