Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Construção de uma API com 
Spring Boot
2º Semestre
Prof. M.Sc. Stefano B. B. R. P. Mathias
Aplicações de Linguagem de Programação Orientada a Objetos
AULA 13
Objetivos:
Construir uma API com Spring Boot.
Tópicos
• Introdução
• Instalação
• API
• MVC e OO
• Repositório
• Controladora
Tópicos (cont...)
• Visualizar os comandos SQL
• Executar a aplicação
• Construir um JAR único para a API
Introdução
• Ao longo das últimas aulas, foram abordados diversos assuntos que
estão conectados e que servirão para o conteúdo dessa aula.
• O padrão MVC Web foi apresentado, juntamente com a arquitetura
de múltiplas camadas.
• Além disso, o JBDC e o Hibernate foram explicados para que a
persistência dos dados possa ser realizada.
• Com todos esses tópicos apresentados, a partir essa aula o objetivo é
construir uma API em Java que irá utilizar tudo que foi visto até aqui.
Introdução (cont...)
• Para construir essa API será deixarmos de utilizar o NetBeans e o
Eclipse será utilizado no lugar. Além disso, também será necessário a
instalação do Spring Boot (dentro do Eclipse).
• Em resumo, o Spring Boot é uma ferramenta que simplifica o
desenvolvimento de aplicativos Java, permitindo que foquemos na
lógica de negócios do aplicativo, em vez de gastar tempo em
configurações complexas e detalhes de infraestrutura.
Instalação
• Entrar no site do Eclipse e baixar o instalador.
• Após instalar o Eclipse, será necessário instalar o Spring Boot.
Instalação (cont...)
API
• Uma API (Interface de Programação de Aplicativos) é um conjunto de
regras e métodos que permitem que diferentes softwares se
comuniquem e interajam, permitindo o acesso controlado a
funcionalidades ou dados de um aplicativo por outro. Isso possibilita
a integração eficiente entre sistemas distintos.
• A API que iremos construir deverá ser capaz de cadastrar um cliente
e poder consultar os clientes cadastrados.
API (cont...)
• Para criar um projeto, basta ir em “File -> New -> Other”.
• Depois ir na pasta “Spring Boot -> Spring Started Project”
API (cont...)
• Definir o nome do projeto e selecionar
o “Type” com a opção “Maven”.
• O Maven é um gerenciador de
dependências que já foi visto
anteriormente.
• Clicar em “Next”
API (cont...)
• Buscar os pacotes que estão
destacados em vermelho na seção
“Avalieble”.
• H2: pacote com um SGBD de memória.
• Spring Data JPA: para ser possível
utilizar anotações nas classes para as
persistências de dados.
• Spring Web: disponibiliza recursos para
a construção de aplicações Web (MVC
etc.).
MVC e OO.
• O primeiro passo é construir a nossa entidade Cliente e com ela,
também adicionar as anotações do JPA para que seja criada uma
tabela em nosso banco de dados.
• As anotações @Entity, @Id, @GeneratedValue e @Column são do
JPA e já foram vistas em aulas anteriores.
• Note que foi preciso utilizar o conceito de encapsulamento e que a
classe foi organizada em um pacote chamado “Model”.
• Foi criado um pacote para separar as classes de “modelo” da
aplicação.
MVC e OO. (cont...)
Padrão Repositório
• De acordo com Eric Evans em seu livro Domain-Driven Design, o
“repositório é um mecanismo para encapsular o banco, recuperar e
buscar comportamento que simulam uma coleção de objetos.“
• O Padrão Repositório foi popularizado por Martin Fowler em 2002
no livro "Patterns of Enterprise Application Architecture". Ele propôs
esse padrão para organizar o acesso a dados de forma desacoplada
e orientada a objetos, melhorando a estrutura e testabilidade das
aplicações.
• Em outras palavras, o repositório também lida com dados e esconde
queries de forma semelhante ao padrão DAO. Porém, o repositório
se trata de uma padrão de alto nível, ou seja, muito mais próximo da
lógica de negócio de uma aplicação.
Padrão Repositório (cont...)
• O próximo passo é criar uma interface e faze-la herdar de
“JpaRepository”.
• Além disso, é necessário adicionar a anotação “@Repository”
(pertencente ao Sprint) para indicar que essa interface é um
repositório.
• Foi criado um pacote para separar as classes de “repositório” da
aplicação.
Padrão Repositório (cont...)
Controladora
• O último passo é criar uma classe que será a “controller” da API. Por
meio dela é que um cliente poderá ser incluído e os clientes
existentes poderão ser consultados.
• Também foi criado um pacote para que as classes de controller
fiquem agrupadas.
• A anotação “@RestController” indica que a classe é uma
controladora.
• A anotação @RequestMapping("") indica a rota base da aplicação. As
rotas não poder colidir, ou seja, ter nomes repetidos.
Controladora (cont...)
• Dentro do controller será necessário uma instância do repositório.
• Uma novidade é que não será preciso invocar o construtor da classe.
Basta colocar a anotação “@Autowired” na propriedade que uma
instância da classe será gerada automaticamente.
Controladora (cont...)
• Agora é necessário criar um método para retornar os clientes
cadastrados.
• Quando a anotação “@GetMapping” for incluída no método, quando
uma requisição do tipo “GET” for feita na rota desse controller, esse
método será chamado.
• Dentro do método utilize a instância do repositório e chame “findAll”
do mesmo.
Controladora (cont...)
• Agora é necessário criar um segundo método para cadastrar um
cliente.
• Quando a anotação “@PostMapping” for incluída no método,
quando uma requisição do tipo “POST” for feita na rota desse
controller, esse método será chamado.
• Dentro do método utilize a instância do repositório e chame “save”
do mesmo.
• Também utilize a anotação “ResponseStatus” para retornar o código
201 (CREATED) quando um cliente for cadastrado com sucesso.
Controladora (cont...)
• Utilize a anotação “@RequestBody” dentro dos argumentos de
entrada do método para indicar que as informações do cliente virão
no corpo da requisição.
Visualizar os comandos SQL
• Para visualizar os comandos SQL que a API está realizando, basta
abrir o arquivo “application.properties” e configurar a opção
“spring.jpa.show-sql=true”.
Executar a aplicação
• Para executar a aplicação, basta selecionar a aba “Boot Dashboard”,
clicar na seta ao lado de local, selecionar o nome do projeto e depois
clicar no ícone destacado abaixo.
Executar a aplicação (cont....)
• A aplicação está sendo executada localmente na porta 8080.
Testar a aplicação
• Para testar a inclusão de um cliente, a ferramenta POSTMAN será utilizada.
• É possível instalá-la no computador ou utilizá-la online. Como a API está local, os
exemplos estão utilizando a versão instalada.
• Crie uma requisição e marque o verbo dela como POST, coloque o endereço
“localhost:8080/Cliente”.
• Na aba “Headers”, inclua uma linha com a key igual a “Content-Type” igual a
“application/json” (isso indica que as informações serão passadas em formato
JSON).
• Na aba “Body”, marque a opção “raw” e preencha os dados do cliente no
formato JSON.
Testar a aplicação (cont...)
• Note que a inclusão foi feita com sucesso e por isso o código de
retorno é 201 e o objeto de retorno mostra a propriedade “Id”
preenchida.
Testar a aplicação (cont...)
• Para testar os clientes cadastrados basta criar uma requisição e
marque o verbo dela como GET, coloque o endereço
“localhost:8080/Cliente”.
• A requisição foi executada com sucesso e por isso o código de
retorno é 200. E os dados retornados foram a lista de clientes
cadastrados.
• Mesmo que não houvessem clientes cadastrados a requisição iria retornar 200, pois não houve nenhum erro na execução
da mesma.
Construir um JAR único para a API
• Para compilar a aplicação e gerar um arquivo JAR único, basta clicar
com o botão direito sobre o arquivo do projeto, selecionar a opção
“Run as” e depois a opção “4 – Maven Build”.
Construir um JAR único para a API (cont...)
• Preencher o campo “Goals” com “clean package” e clicar em “Run”.
Construir um JAR único para a API (cont...)
• Observe que foi gerado um arquivo JAR (destacado abaixo). Esse
arquivopode ser executado no computador com o Eclipse fechado e
a API irá funcionar, pois a mesma está sendo executada devido a esse
processo recém realizado.
Referências
• Documentação do JpaRepository: https://docs.spring.io/spring-
data/jpa/docs/current/api/org/springframework/data/jpa/repository/Jp
aRepository.html
• Documentação da anotação Repository: 
https://www.digitalocean.com/community/tutorials/spring-repository-
annotation
• Diferença entre DAO e Repository:
https://www.baeldung.com/java-dao-vs-repository
https://www.dio.me/articles/ddd-a-diferenca-entre-dao-e-repository
https://dev.to/diariodeumacdf/padroes-dao-e-repository-13nj
Projeto implementado: 
https://github.com/bluyus/AulasALPOO/tree/master/AulaSpringBootApi