Spring Boot Expert - JPA, RESTFul API, Security, JWT e Mais
Incluir no arquivo pom.xml o parent:
- Spring Boot Starter Parent
Link: https://mvnrepository.com/
Adicionar também as dependências e builds
Criar a classe Principal: VendasApplication
Adicionar Dependências Starter, dependências mais comums e usadas
Spring Boot Framework
Container IOC (Inversion of Control)
Configuration: classe de configuração Component: classe com métodos e operações
MVC: Model - View - Controller
Container IOC -> @Configuration -> @Bean
Container IOC -> @Component -----> @Controller
\----> @Repository
\----> @Service
Acesso Spring Boot: http://localhost:8080/ Acesso H2: http://localhost:8080/h2-console
Propriedades Spring Boot Properties: https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html
http://localhost:8080/h2-console
create table cliente ( id int not null primary key, nome varchar(100) )
Spring Boot utiliza HikariCP como DataSource (Pool de conexões): https://github.com/brettwooldridge/HikariCP
Para criar automaticamente as tabelas ao iniciar o Spring Boot, criar o arquivo data.sql na pasta resource com os scripts.
Criados em java/io.github.dougllasfps/domain.entity/
Criados métodos para listar e criar cliente
Criando métodos para update e delete de cliente
Mudando a Classe Cliente incluindo as notations
Refatorado List e Insert
Refatorado todo o Clientes.java
Limpeza dos Códigos para usar o JPA Repository
Métodos customizados do JPA
Inserir as linhas abaixo no application.properties para melhor visualizar os dados:
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
Exemplos de Consultas: JPQL e SQL Nativa
Mapeamento Classe Produto
Mapeamento Classe Pedido
Mapeamento Classe ItemPedido
Criando demais repositórios
Correção da aula anterior...
Limpeza do Código VendasApplication e Criação / configuração do Controller
Observações do Request Mapping
Ao usar a notation @RestController ao invés de @Controller, não é mais necessário usar as notations @ResponseBody, pois a mesma já a contém.
Refatorado para padrão RESTful.
API Produtos completa
Criação / Implementação da Camada de Serviço para Pedidos
Criação dos DTOs
Adicionado a Biblioteca [Lombok] (https://projectlombok.org/)
Refatorado o Projeto
Finalizado o Pedido
Incluir no pom.xml a dependência para não precisar mais ficar reiniciando o Projeto para verificar atualizações, basta recompilar: CTRL + F9
Consultar detalhes do pedido
Adicionando um atributo de Status do Pedido
Método para Cancelar o pedido
Criando validação do campo Cliente > Nome
Outras Validações
Validações Produto, precisa da annotation @Valid no save e update
Validações Pedido
Validação Customizada
Adicionar dependência no pom.xml
Criar Classe Security
Adicionar método de encoder
Configuração do Authentication Manage Builder
Configuração do configure(HttpSecurity)
Configuração completa
Configurando autenticação Basic
Implementação
Implementação do cadastro do usuário
Finalizando
Token
Decode Token
Filtro implementado
Registrar filtro no Spring Security
Finalizando
Mudar parâmetros de conexão
Inclusão das dependências e configurações básicas
mplushnikov/lombok-intellij-plugin#952
Habilitando consultas com Token no swagger
Customizando a UI do Swagger: ClienteController
JAR (Java Archive)
Gerar o JAR
mvn clean package
Executar o JAR
java -jar .\vendas-1.0-SNAPSHOT.jar
WAR (Web Archive)
incluir no pom.xml a tag PACKAGING e dependencia do tomcat extender a classe principal
executar mesmos comandos do JAR
<packaging>war</packaging>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
alterado configuracao de profiles do pom.xml e executar com os comandos abaixo
mvn clean package -P desenvolvimento
ou
mvn clean package -P producao