Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/codingloria/cursojavaespring

Aulas, exercícios e Desafios propostos do curso Descomplicando Java e Spring da Kamila Santos
https://github.com/codingloria/cursojavaespring

api api-rest http java jdk jre jvm poo rest spring-boot spring-data spring-security

Last synced: about 9 hours ago
JSON representation

Aulas, exercícios e Desafios propostos do curso Descomplicando Java e Spring da Kamila Santos

Awesome Lists containing this project

README

        

Curso: Descomplicando Java e Spring ✨

Plataforma: LinuxTips

No treinamento é ensinado a dominar a linguagem de programação Java e o framework Spring de maneira simplificada e eficaz. O curso aborda desde os conceitos fundamentais do Java, como sintaxe e estruturas de controle, até tópicos avançados relacionados ao desenvolvimento de aplicativos web e corporativos. É passado conhecimento sobre como usar o Spring, um framework poderoso que simplifica o desenvolvimento de aplicativos Java, incluindo injeção de dependência, controle transacional e desenvolvimento baseado em componentes.
Ao final do treinamento, estarei apta a criar aplicações Java robustas e eficientes, aproveitando todo o potencial dessa linguagem versátil e amplamente utilizada.



Este curso é composto por 29 seções, listadas abaixo:




1 - História do Java e Mercado de Trabalho

- O que é Java? ✅
- O que é Spring? ✅
- Mercado de trabalho ✅
- O que te espera nas próximas aulas ✅


2 - JDK, JRE, JVM e Setup do Ambiente

- O que é JDK? ✅
- JRE ✅
- JVM ✅
- Setup do Ambiente ✅


3 - Tipos de Dados e Operadores

- Variáveis e tipos de dados ✅
- Operadores ✅


4 - Desvios condicionais e laços de repetição

- Condicionais ✅
- Repetição ✅


5 - Arrays

- Criação, length, forEach, AsList, List.of e Copy ✅
- Fill, equals e sorted ✅


6 - POO: O que é? Encapsulamento e abstração

- O que é programação orientada a objetos? ✅
- Criando objetos e atributos ✅
- Criando os métodos do nosso objeto ✅
- Encapsulamento ✅
- Abstração: Classe e métodos abstratos ✅
- Abstração: Via interfaces ✅


7 - POO: Herança e Polimorfismo

- Herança ✅
- Polimorfismo ✅


8 - Lendo elementos via console e manipulando arquivos

- Scanner: usando o terminal para receber informações ✅
- File: Escrevendo em arquivos ✅
- File: lendo o conteúdo de um arquivo ✅


9 - Enums e elementos estáticos

- Trabalhando com Enums ✅
- Static: campos / atributos estáticos ✅
- Static: Métodos estáticos ✅
- Static: Classes aninhadas estáticas ✅


10 - API de Collections e Generics

- Por dentro da API de collections: hierarquia das classes e interfaces ✅
- Collections API - List: ArrayList, LinkedList, VectorList ✅
- Collections API - Queue: Priority Queue ✅
- Collections API - Set: HashSet, LinkedHashSet ✅
- Collections API - Map: HashMap e HashTable ✅
- Generics ✅


11 - Classe Object

- Conhecendo o pacote java.lang ✅
- Classe Object ✅
- toString() ✅
- equals() ✅
- HashCode() ✅


12 - Typecasting

- O que é typecasting? ✅
- Widening Type Casting ✅
- Narrowing Type Casting ✅
- Upcasting ✅
- Downcasting ✅
- Autoboxing e Unboxing ✅


13 - Exceptions

- O que são exceptions? ✅
- Checked Exceptions ✅
- Unchecked Exceptions ✅


14 - Novidades do Java 8 ao Java 19

- Streams API
- Lambda Expressions
- Method Reference
- Text Blocks
- Records
- Pattern Matching for Switch
- Virtual Threads
- Java Date and Time API


15 - Jvm: Arquitetura, componentes e funcionamento

- O que é JVM?
- Linguagem interpretada, compilada e o Java ??
- Class Loader
- JVM Memory: Method Area, Heap, Stack, PC Registers
- Interpreter, JIT compiler e segmented Code Cache
- Garbage Collector


16 - API? CRUD? HTTP? REST? Que sopa de letrinhas é essa?

- CRUD
- API
- REST
- HTTP: Métodos HTTP
- HTTP: Status HTTP


17 - Spring: Ecossistema e principais conceitos

- O que é Spring e quais seus principais projetos?
- Spring x Jakarta EE
- O que é injeção de dependências e IOC Container?
- Annotations: @SpringBootApplication, @Component, @Repository, @RestController
- Annotations: @Autowired, @Value, @Configuration, @Bean
- Annotations: @EnableAutoConfiguration, @RequestMapping, @PostMapping, @GetMapping
- Annotations: @PutMapping, @PatchMapping, @DeleteMapping, @RequestParam, @PathVariable
- Princípios SOLID


18 - Criando sua primeira API com Spring

- Criando seu primeiro projeto no Spring Initialzr
- Por dentro do seu primeiro projeto Spring
- Estrutura base de um projeto
- Expondo seus primeiros endpoints


19 - Spring Data JPA (Parte 1)

- Banco de dados relacional: conceitos e normalização
- SQL: Criando sua primeira tabela
- SQL: Inserindo e listando dados na tabela
- SQL: Atualizando e excluindo dados da tabela
- O que é JDBC?
- O que é Hibernate?
- O que é JPA?
- Criando a entidade da nossa aplicação
- Criando querys dos métodos CRUD com JPA Repository


20 - Spring Data JPA (Parte 2)

- Desenvolvendo a service e a controller
- @CreationTimestamp e @UpdateTimestamp
- @Query: Criando queries personalizadas
- Desafio 1: Crie ao menos mais 2 consultas diferentes usando o @query
- Desafio 2: Como filtrar dados com espaços?
- Derived Query Methods
- Desafio 3: Explorando outros filtros com derived query methods
- Cascade Types
- Relacionamento 1:1, 1:n, n:1 e n:n
- Tipos de Join
- Fetch Types
- Desafio 4: Como atualizar os dados bancários?


21 - NoSQL: Spring Boot + DynamoDB

- NoSQL
- Introdução a DynamoDB
- Introdução a localstack
- Setup - Dockeer, AWS CLI
- Spring Boot + DynamoDB + Localstack (parte 1)
- Spring Boot + DynamoDB + Localstack (parte 2)
- Desafio: refatorando o projeto


22 - Tratando erros da nossa API

- Criando exceções personalizadas
- @ResponseStatus
- Exception Handler
- Criando mais exceções personalizadas


23 - Testes em APIs REST (Parte 1)

- O que é pirâmide de testes?
- Conceitos iniciais: Teste e fixture
- Conceitos iniciais: Test Case, Test Suite e System Under Test
- Boas práticas: Princípios FIRST
- Test Smells
- Cobertura de testes
- Testando nossa repository com @DataJpaTest
- Escrevendo testes para a repository
- Junit + Mockito: Testando a camada de serviços
- Escrevendo testes para a service
- Cobertura de testes na prática


24 - Testes em APIs REST (Parte 2)

- Testes de controller com Mock MVC x Rest Assured
- Testes de integração com Testcontainers
- TDD - Desenvolvimento guiado por testes
- Desenvolva uma API com TDD


25 - Segurança de APIs com Spring Security

- O que é Spring Security?
- Conceitos de segurança de aplicações
- Módulos do Spring Security
- API com Spring Security + basic auth + bcrypt
- Como funciona a autenticação JWT?
- O que é refresh token e para que ele serve?
- Adicionando refresh token na nossa API com Spring Security + basic auth + bcrypt


26 - Documentação e monitoramento da nossa API

- Documentação de APIs com springdoc-openapi
- Documentação com spring rest docs
- Configurando o acuator e suas principais métricas
- Prometheus: configuração e métricas personalizadas
- Criando mais métricas customizadas


27 - Programação reativa com Spring Webflux + projeto Reactor

- O que é paradigma reativo?
- O que diz o manifesto reativo?
- Reactive Streams
- RxJava
- Trabalhando com Java Util Concurrent e Java Util Stream
- Conceitos essenciais de programação reativa
- Spring Webflux
- Projeto Reactor
- Criando sua primeira aplicação com Spring Webflux
- Testes unitários com Reactor Test


28 - Consumindo APIs externas e Introdução a microsserviços

- Consumindp APIs com o Reactive Feign
- Conceitos e boas práticas de microsserviços
- Padrões de microsserviços


29 - Final

- Simulado final