Cover....1
Title Page....2
Copyright and Credits....2
Contributors....4
Table of Contents....8
Preface....14
Part 1: Architectural Foundations....20
Chapter 1: Introduction to Advanced Spring Boot Concepts....22
Technical requirements....23
Why use Spring Boot for advanced projects?....23
The complexity of modern software development....23
The advantages of Spring Boot....23
Embracing the new era – the innovations of Spring Boot 3.0....30
Wrapping up – why Spring Boot 3.0 is your advanced project ally....33
A brief overview of what’s to come....33
Chapter 2, Key Architectural Patterns in Microservices – DDD, CQRS, and Event Sourcing....34
Chapter 3, Reactive REST Development and Asynchronous Systems....34
Chapter 4, Spring Data: SQL, NoSQL, Cache Abstraction, and Batch Processing....35
Chapter 5, Securing Your Spring Boot Applications....36
Chapter 6, Advanced Testing Strategies....36
Chapter 7, Spring Boot 3.0 Features for Containerization and Orchestration....37
Chapter 8, Exploring Event-Driven Systems with Kafka....38
Chapter 9, Enhancing Productivity and Development Simplification....38
Summary....39
Part 2: Architectural Patterns and Reactive Programming....40
Chapter 2: Key Architectural Patterns in Microservices – DDD, CQRS, and Event Sourcing....42
Technical requirements....43
Introduction to architectural patterns in microservices....43
Why do we need an architectural design in the first place?....43
What are design patterns?....44
What are microservices?....44
What are the principles behind microservices?....45
Microservices design patterns....45
Exploring DDD....47
What is a domain exactly?....48
What is DDD?....48
How to define DDD structure?....49
Learning about CQRS....51
What is the context of CQRS?....52
What are best practices and common pitfalls?....52
What are the benefits of the CQRS design pattern?....53
Understanding Event Sourcing....54
Event-Driven Architecture....54
What is Event Sourcing?....55
Differences between Event-Driven Architecture and Event Sourcing....57
A real-world example of the Event Sourcing pattern....58
The relation of Event Sourcing with CQRS....60
A real-world example of CQRS with Event Sourcing....64
Brief overview of other architectural patterns....65
Service Oriented Architecture (SOA) design pattern....65
The Circuit Breaker pattern....66
The Layered design pattern....67
The MVC design pattern....68
The Saga design pattern....69
Summary....71
Chapter 3: Reactive REST Development and Asynchronous Systems....72
Technical requirements....72
Introduction to reactive programming....73
Introducing reactive programming basics....73
Contrasting paradigms – reactive versus traditional programming....74
Exploring the dictionary of reactive programming....75
Identifying opportunities for reactive programming....76
Learning from the field – reactive programming in action....77
Leveraging Spring Boot 3.0 for reactive solutions....78
Wrapping up and looking forward....79
Building a reactive REST API....80
Setting up the development environment....80
Implementing the repository layer....83
Building the reactive REST controller....85
Adding advanced Mono operations....87
Running the Spring Boot application with Gradle and Java 17....88
Conclusion....90
Asynchronous systems and backpressure....91
Diving into backpressure....91
Implementing backpressure in the project....93
Observations and conclusions....96
Summary....96
Part 3: Data Management, Testing, and Security....98
Chapter 4: Spring Data: SQL, NoSQL, Cache Abstraction, and Batch Processing....100
Technical requirements....101
Introduction to Spring Data....101
Understanding the fundamentals and benefits of Spring Data....102
Setting up your Spring Boot project....103
Using Spring Data with SQL databases....105
Integrating PostgreSQL with Spring Boot using Docker....105
Developing complex relationships between entities....107
Implementing practical CRUD operations in the online bookstore....108
NoSQL databases in Spring Boot....111
Exploring the integration of NoSQL databases in Spring Boot....111
Setting up and configuring MongoDB....112
Building the Review object and its repository....113
Implementing a hybrid data model in the online bookstore....114
Spring Boot cache abstraction....115
Understanding cache abstraction....116
Configuring and using cache abstraction in the application....116
In conclusion....118
Spring Boot batch processing....119
Understanding the role of batch processing in Spring Boot....119
Implementing Spring Batch....120
Executing the batch job....123
Data migration and consistency....124
Exploring data migration strategies and tools like Liquibase....124
Practical steps for implementing data migration using Liquibase....125
Implementing migration strategies in the online bookstore....126
Summary....128
Chapter 5: Securing Your Spring Boot Applications....130
Technical requirements....131
Introducing security in Spring Boot 3.0....131
Exploring Spring Boot 3.0’s security features....131
Setting up a basic security configuration....133
Implementing OAuth2 and JWT....135
Configuring OAuth2 with Keycloak....135
Testing our endpoints with an access token....146
Implementing RBAC in Spring Boot....148
Defining roles and permissions in Keycloak....149
Tailoring the book store application for role-based access....151
Summary....158
Chapter 6: Advanced Testing Strategies....160
Technical requirements....161
TDD in Spring Boot....161
Implementing TDD....162
Discussing terminology for unit tests....165
Unit testing of controllers with a security layer....166
Key annotations for Spring MVC controller testing....167
Crafting controller tests with Spring annotations....168
Integration testing – bridging components together....171
Setting up the testing environment....172
Configuring application properties for integration testing....173
Initializing the database with Testcontainers....174
Mocking external services with WireMock....176
Writing integration tests for Author Controller....177
Testing reactive components....178
Setting up the testing environment....178
Preparing mock components....179
Writing test cases....180
Summary....181
Part 4: Deployment, Scalability, and Productivity....182
Chapter 7: Spring Boot 3.0 Features for Containerization and Orchestration....184
Technical requirements....185
Containerization and orchestration in Spring Boot....185
Understanding containerization – your app in a box....185
Reaping the benefits – lighter loads, quicker starts....186
Getting Spring Boot in the game – container-friendly from the start....186
Unleashing Spring Boot superpowers – portability, efficiency, and control....187
Spring Boot and Docker....187
Crafting efficient Docker images with layered jars....188
Simplifying Dockerization with Cloud Native Buildpacks....189
Enhancing graceful shutdown capabilities....190
Optimizing Spring Boot apps for Kubernetes....191
Integrating Kubernetes probes for application health....192
Managing configurations and Secrets with Kubernetes....196
Utilizing profile-specific configurations in Kubernetes....198
Spring Boot Actuator with Prometheus and Grafana....200
Integrating Prometheus for metrics collection....200
Visualizing metrics with Grafana....203
Summary....206
Chapter 8: Exploring Event-Driven Systems with Kafka....208
Technical requirements....209
Introduction to event-driven architecture....209
Setting up Kafka and ZooKeeper for local development....210
Understanding Kafka brokers and their role in event-driven systems....211
Running Kafka and ZooKeeper with Docker....212
Building an event-driven application with Spring Boot messaging....214
Creating a Spring Boot project for Kafka integration....215
Building the producer application....217
Building the consumer application....218
Testing the whole stack – bringing your event-driven architecture to life....220
Monitoring event-driven systems....221
Monitoring your Kafka infrastructure....222
Using CMAK to monitor the Kafka server....223
Summary....226
Chapter 9: Enhancing Productivity and Development Simplification....228
Technical requirements....229
Introducing AOP in Spring Boot....229
Exploring the basics of AOP – join points, pointcuts, advice declarations, and weaving....230
Crafting a logging aspect – a step-by-step example....230
Simplifying HTTP API with the Feign Client....233
What is the Feign Client?....233
Implementing the Feign Client in Spring Boot....233
Advanced Spring Boot auto-configuration....236
What is advanced auto-configuration?....236
Understanding conditional configuration....237
Common pitfalls and best practices....238
Embracing best practices in Spring Boot – AOP, the Feign Client, and advanced auto-configuration....238
Navigating common pitfalls in Spring Boot – AOP, the Feign Client, and advanced auto-configuration....240
Real-world example – incorrectly scoped proxies in AOP....241
Summary....241
Index....244
Other Books You May Enjoy....253
Mastering Spring Boot 3.0 is your gateway to building scalable and robust backend systems using the latest techniques. Penned by a seasoned software developer with 20+ years of experience in the tech industry, this book follows a hands-on, step-by-step approach to helping you understand Spring Boot concepts and apply them to real-world projects.
You'll start by exploring key architectural patterns such as DDD, CQRS, and event sourcing. Next, you'll focus on the nuances of reactive REST development, delve into advanced testing strategies, and fortify your applications' security. You'll also discover the power of containerization and orchestration with Spring Boot 3.0 and unlock its potential for smooth deployments. Additionally, by integrating Kafka, you'll be able to build robust event-driven systems.
By the end of this book, you'll have become proficient in architectural patterns, testing strategies, and application security. Whether you're an architect, backend developer, or DevOps engineer, this book will help you leverage the advanced features of Spring Boot 3.0 for secure and efficient backend development.
If you're a Java developer eager to elevate your skills, then Mastering Spring Boot 3.0 is for you. Microservices architects, DevOps engineers, and technical leads who want to enhance their skills in building powerful backend systems with advanced Spring Boot features will also find this book useful. A foundational understanding of microservices architecture and some experience with RESTful APIs will help you get the most out of this book.