Spring Advanced

Spring Advanced

How to use Spring REST, HATEOAS and CORS, documenting REST services, serializing and limiting the data passed to the client and more.

Czas trwania
40 hours
Typ kursu
Online
Język
English
Czas trwania
40 hours
Lokalizacja
Online
Język
English
Kod
JVA-075
Szkolenie dla #uczestników# lub większej liczby osób? Dostosuj treningi dla Twoich konkretnych potrzeb
Spring Advanced
Czas trwania
40 hours
Lokalizacja
Online
Język
English
Kod
JVA-075
€ 850 *
Szkolenie dla #uczestników# lub większej liczby osób? Dostosuj treningi dla Twoich konkretnych potrzeb

Opis

Our training focuses on the practical topics of Spring Framework such as how to use Spring REST, HATEOAS and CORS, documenting REST services, serializing and limiting the data passed to the client and more.


We will also cover the use o @Transactional annotation, optimistic transactions, JWT authorization, OAuth2 authorization server, practical usage of reactive programming with WebFlux as well as testing Spring services, Scheduler & Actuator, and deploying to Docker.

certificate
Po ukończeniu kursu na formularzu Luxoft Training
wydawany jest certyfikat

Cele

  • Introduce you to advanced Spring Framework topics and give examples of how they can be used

Grupa docelowa

  • Java Developers
  • Software Architects

Warunki wstępne

  • Good knowledge of Java, knowledge of Spring

Plan działania

Spring Data REST advanced

  • Introduction. Spring REST overview
  • Conditional operations with headers (ETag, If-Match, If-None-Match, If-modified-since)
  • REST events
  • REST maturity model
  • Spring HATEOAS
  • API RestTemplate and WebClient for implementing REST services
  • Documenting REST service with Swagger and SpringFox
  • Practice


Object mapping and validation

  • Limiting data passed to the client: @JsonIgnore, nullifying fields, DTO
  • Projections and excerpts with Spring Data REST
  • Using MapStruct for automatic mapping to DTO
  • Custom serializers and deserializers
  • Validation of model with javax.validation annotations, custom annotations
  • Practice


Transactions

  • @Transactional annotation
  • Transaction isolation levels
  • Transaction propagation
  • Exception handling in transactions
  • The problem of calling a transaction from the same bin
  • Optimistic locking
  • Connecting several DBs to the project
  • Distributed transactions and SAGA patterns


Security for REST services / JWT authorization and roles management

  • Approaches to security handling in Spring
  • Building UAA server with OAuth2
  • JWT tokens
  • Using Spring Security to define role-based access, demonstrating examples
  • Practice


Reactive Spring with WebFlux

  • Reactive approach overview
  • Reactive flows specification in Java 9
  • Class Mono and Flux
  • Reactive operators
  • R2DBC drivers
  • Reactive Spring Data
  • Building REST API with WebFlux
  • WebClient for reactive data retrieval
  • RSocket protocol (1h)
  • Reactive interaction with RabbitMQ
  • Reactive patterns and benchmarks
  • Practice


Testing Spring services (mock objects, TestContext framework)

  • Unit testing with Mockito
  • Integration testing
  • Spring testing annotations
  • TestContext framework
  • Server-Side REST Tests
  • REST services testing in IntelliJ IDEA
  • Testing WebFlux
  • Practice


Spring Schedulers

  • @Scheduled annotation
  • fixedRate, fixedDelay, initialDelay
  • using CRON expressions
  • Practice


Spring caching

  • Using caching
  • EhCache usage and settings
  • @Cacheable
  • @CacheEvict, @CachePut
  • @CacheConfig
  • Conditional caching
  • Java-based caching
  • Spring Data caching
  • Spring caching based on EhCache
  • EhCache configuration
  • Practice


Spring Boot Actuator

  • Actuator endpoints
  • Metrics in Spring Boot
  • Monitoring and management over HTTP
  • Spring Boot Admin management tool


Deploying Spring application

  • Deploying into Docker
  • Deploying Spring application with nginx as a front server (incl. load balancing)
  • HTTP caching with NGINX
  • Deploying Spring application with nginx - containerized setup with docker-compose
  • Practice
Tenisówki
Vladimir Sonkin
Java and Web Technologies Expert

Vladimir has more than 12 years of experience in Java Enterprise development and has been working for Luxoft since 2006, where he is now a Senior Developer involved in one of our most important banking projects.


<
Nadal masz pytania?
Połącz sięz nami