Cod: JVA-075
Durata: 40 ore
Durata: 40 ore
Descriere
In cadrul acestui curs vom aborda aspectele practice ale Spring Framework cum ar fi Spring REST, HATEOAS si CORS, documentarea REST services, serializarea si limitarea datelor transmise catre client si multe altele.Vom discuta si despre folosirea @Transactional annotation, optimistic transactions, JWT authorization, OAuth2 authorization server, utilizarea reactive programming cu WebFlux precum si testarea serviciilor Spring, Scheduler & Actuator, si implementarea in Docker.
Subiecte curs
Spring Data REST- Prezentare Spring REST
- Conditional operations cu headers (ETag, If-Match, If-None-Match, If-modified-since)
- REST events
- REST maturity model
- Spring HATEOAS
- API RestTemplate si WebClient pentru implementarea REST services
- Documentarea REST service cu Swagger si SpringFox
- Practica
Object mapping si validare
- Limitarea datelor trimise catre client: @JsonIgnore, nullifying fields, DTO
- Projections si excerpts cu Spring Data REST
- Utilizarea MapStruct pentru automatic mapping in DTO
- Custom serializers & deserializers
- Validarea unui model cu adnotarile javax.validation, adnotari personalizate
- Practica
Tranzactii
- Adnotarea @Transactional
- Transaction isolation levels
- Transaction propagation
- Exception handling in transactions
- The problem of calling a transaction from the same bin
- Optimistic locking
- Conectarea mai multor baze de date la proiect
- Distributed transactions si SAGA patterns
Securitate in REST services / Autorizare JWT si managementul rolurilor
- Abordari legate de securitate in Spring
- Construirea unui server UAA cu OAuth2
- JWT tokens
- Folosirea Spring Security pentru a defini role-based access, exemple
- Practica
Reactive Spring cu WebFlux
- Prezentare reactive approach
- Reactive flows specification in Java 9
- Class Mono & Flux
- Reactive operators
- R2DBC drivers
- Reactive Spring Data
- Dezvoltarea REST API cu WebFlux
- WebClient for reactive data retrieval
- RSocket protocol
- Reactive interaction cu RabbitMQ
- Reactive patterns & benchmarks
- Practica
Testing Spring services (mock objects, TestContext framework)
- Unit testing in Mockito
- Integration testing
- Spring testing annotations
- TestContext framework
- Server-Side REST Tests
- REST services testing in IntelliJ IDEA
- Testing WebFlux
- Practica
Spring Schedulers
- @Scheduled annotation
- fixedRate, fixedDelay, initialDelay
- Utilizarea CRON expressions
- Practica
Spring caching
- Utilizarea caching
- EhCache usage & settings
- @Cacheable
- @CacheEvict, @CachePut
- @CacheConfig
- Conditional caching
- Java-based caching
- Spring Data caching
- Spring caching based on EhCache
- EhCache configuration
- Practica
Spring Boot Actuator
- Actuator endpoints
- Metrics in Spring Boot
- Monitoring & management over HTTP
- Spring Boot Admin management tool
Implementarea unei aplicatii Spring
- Implementare in Docker
- Implementarea unei aplicatii Spring cu nginx ca front server (incl. load balancing)
- HTTP caching cu NGINX
- Implementarea unei aplicatii Spring cu nginx - containerized setup cu docker-compose
- Practica
Obiective
- Familiarizarea cu subiecte avansate legate de Spring Framework si exemple de utilizare
Public tinta
- Programatori Java
- Arhitecti Software
Cerinte curs
- Cunostinte de Java si Spring