Welcome to "Spring Advanced", a comprehensive course designed for experienced developers aiming to master the Spring Framework's advanced features. This course covers essential topics for building robust, scalable, and secure applications using Spring. Through a blend of presentations, examples, and hands-on exercises, you will gain deep insights and practical experience in advanced Spring development.
This course covers the following key topics:
Spring Data REST and API Documentation: Advanced REST operations, HATEOAS, and documenting APIs with Swagger.
Transactions and Security: Handling complex transactions and implementing secure REST services using JWT and OAuth2.
Reactive Programming with WebFlux: Building and testing reactive applications with WebFlux and integrating with reactive data sources.
Key Learning Objectives
Master Advanced REST Operations:
Manage Complex Transactions:
Secure REST Services:
Develop Reactive Applications:
Enroll in "Spring Advanced" to deepen your expertise in Spring Framework and become proficient in handling complex, real-world applications. This course offers a thorough understanding of advanced Spring features, ensuring you are well-equipped to develop, secure, and deploy robust Spring applications in a professional environment.
To introduce participants to advanced Spring Framework topics, plus give examples of usage.
Java Developers & Architects
Good knowledge of Java, knowledge of Spring
1. Spring Data REST advanced (5h)
1) Spring REST (3h)
- Introduction. Spring REST overview (1h)
- Conditional operations with headers (ETag, If-Match, If-None-Match, If-modified-since) (0.5h)
- REST events (0.5h)
- REST maturity model (0.5h)
- Spring HATEOAS (0.5h)
2) API RestTemplate and WebClient for implementing REST services (1h)
3) Documenting REST service with Swagger and SpringFox (1h)
Homework: ~2h
2. Object mapping and validation (5h)
- Limiting data passed to the client: @JsonIgnore, nullifying fields, DTO (0.1h)
- Projections and excerpts with Spring Data REST (0.1h)
- Using MapStruct for automatic mapping to DTO (1h)
- Custom serializers and deserializers (1h)
- Validation of model with javax.validation annotations, custom annotations (1h)
Homework: ~2 h
3. Transactions (6h)
- @Transactional annotation (0.5h)
- Transaction isolation levels (1h)
- Transaction propagation (1h)
- Exception handling in transactions (0.5h)
- The problem of calling a transaction from the same bin (0.5h)
- Optimistic locking (o.5h)
- Connecting several DBs to the project (0.5h)
- Distributed transactions and SAGA patterns (0.5h)
4. Security for REST services / JWT authorization and roles management (6h)
- Approaches to security handling in Spring (1h)
- Building UAA server with OAuth2 (1h)
- JWT tokens (2h)
- Using Spring Security to define role-based access, demonstrating examples (2h)
Homework: ~2h
5. Reactive Spring with WebFlux (8h)
- Reactive approach overview (0.5h)
- Reactive flows specification in Java 9 (0.5h)
- Class Mono and Flux (0.5h)
- Reactive operators (2h)
- R2DBC drivers (0.5h)
- Reactive Spring Data (0.5h)
- Building REST API with WebFlux (0.5h)
- WebClient for reactive data retrieval (1h)
- RSocket protocol (1h)
- Reactive interaction with RabbitMQ (0.5h)
- Reactive patterns and benchmarks (0.5h)
Homework: ~2h
6. Testing Spring services (mock objects, TestContext framework) (4h)
- Unit testing with Mockito (0.5h)
- Integration testing (1h)
- Spring testing annotations (0.5h)
- TestContext framework (0.5h)
- Server-Side REST Tests (0.5h)
- REST services testing in IntelliJ IDEA (0.5h)
- Testing WebFlux (0.5h)
Homework: ~2h
7. Spring Schedulers (0.5h)
- @Scheduled annotation
- fixedRate, fixedDelay, initialDelay
- using CRON expressions
Homework: ~30min
8. Spring caching (2h)
- 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
Homework: ~1h
9. Spring Boot Actuator (1h)
- Actuator endpoints
- Metrics in Spring Boot
- Monitoring and management over HTTP
- Spring Boot Admin management tool
10. Deploying Spring application (1.5h)
- Deploying into Docker (0.5h)
- Deploying Spring application with nginx as a front server (incl. load balancing) (0.5h)
- HTTP caching with NGINX (0.5h)
- Deploying Spring application with nginx - containerized setup with docker-compose (0.5h)
Homework: ~30 min
Total: theory 40h, practice (homework) 12h
Vladimir Sonkin
Java and Web Technologies Expert