README
Last updated
Last updated
This repository contains a collection of sample projects and experiments showcasing various Spring Boot integrations and features. The goal is to help you explore new possibilities, demonstrate best practices, and provide ready-to-use examples.
Each subdirectory in this repository demonstrates a focused aspect of Spring Boot development ranging from database integrations, caching, messaging, and multi-tenancy to advanced topics like Chaos Engineering and observability.
Key Features:
Wide Range of Integrations: Explore different databases (MySQL, PostgreSQL, MongoDB, Oracle), caching with Redis, and advanced topics like multi-tenancy.
Observability & Monitoring: Many samples include Prometheus, Grafana, or Kibana. They demonstrate setting up and analyzing application performance in real-time.
Scalability & Resilience Patterns: Investigate Chaos Monkey for injecting controlled failures, or look at multi-database solutions for horizontal scaling.
Below is a quick lookup table summarizing each sub-project. For more details, check their individual README.md files.
Demonstrates how to use Spring Batch 5 with a straightforward configuration.
Shows how to enforce architectural constraints in a Spring Boot project using ArchUnit.
Covers applying Chaos Engineering with Spring Boot, along with performance tests.
Demonstrates an observability stack with Loki, Grafana, Tempo, and Mimir.
Illustrates storing data in MongoDB, then retrieving it using reactive Elasticsearch.
Showcases saving data and performing swift geospatial searches in OpenSearch.
Demonstrates RabbitMQ producer acknowledgments, a Dead Letter Queue setup, and more.
Highlights generating PDF documentation of RESTful APIs using Spring REST Docs.
Uses the Strategy Pattern within a Spring application, builds a native image.
Demonstrates toggling specific features on or off at runtime in a Spring Boot application.
Explores multiple Redis usage patterns with varying time-to-live (TTL) settings.
Illustrates integrating GraphQL with QueryDSL to interact with a database.
Showcases using GraphQL alongside the reactive WebFlux stack for asynchronous processing.
Demonstrates applying GraphQL concepts with the traditional Spring MVC for synchronous processing.
Highlights creating custom sequence generators and optimizing database connections.
Shows how to track entity revisions with Hibernate Envers and monitor system changes.
Demonstrates configuring multiple SQL databases in a single Spring Boot application.
Explains configuring Hibernate’s second-level caching via Redis and testing it.
Illustrates writing data to a primary Postgres database, then reading from a replica.
Implements keyset pagination using Blaze Persistence, adding dynamic query features.
Implements keyset pagination using Spring Data JPA, enabling dynamic queries.
Provides examples of running multi-tenant applications under different strategies.
Demonstrates having each tenant use a separate database (while sharing the same codebase).
Shows how to share a single database and table across tenants using a partitioning strategy.
Demonstrates isolating tenants by allocating a separate schema for each tenant.
Explains performing reactive CRUD operations in Spring Boot using jOOQ.
Demonstrates PostgreSQL JSON and ENUM column support in a reactive application.
Demonstrates caching reactive database operations in Redis to boost performance.
Illustrates an end-to-end reactive CRUD workflow in Spring Boot using R2DBC.
Demonstrates scheduling while ensuring only one active job running at a time using ShedLock.
For more info about this repository, please visit here.
This repository leverages a broad stack of technologies, including:
Java / JavaScript / SQL for core logic & data.
Spring Framework (Boot, Data, Security, etc.) as the key application framework.
Project Reactor for reactive data flows and concurrency.
QueryDSL, Liquibase, Flyway, JOOQ for advanced database interactions and migrations.
Docker, Docker Compose for containerization and multi-service orchestration.
RabbitMQ, Redis, Elasticsearch, OpenSearch, MongoDB for messaging, caching, and search.
Gradle / Maven for builds and dependency management.
GitHub Actions, CircleCI, Jenkins for CI/CD pipelines.
For in-depth version references, visit techstack.md or see individual project READMEs.
Start Postgres and pgAdmin
Clean up everything using
Claim unused volumes
Running container
How to overwrite local changes with git pull
Stash local changes:
Pull changes from remote:
How to revert the changes that are pushed to remove
Sets up background job scheduling with .
Showcases the , providing job scheduling capabilities.