{"id":17000844,"url":"https://github.com/rajadilipkolli/my-spring-boot-experiments","last_synced_at":"2025-03-17T09:30:56.991Z","repository":{"id":37796671,"uuid":"387058006","full_name":"rajadilipkolli/my-spring-boot-experiments","owner":"rajadilipkolli","description":"Examples about various spring integrations","archived":false,"fork":false,"pushed_at":"2024-05-22T22:15:58.000Z","size":6729,"stargazers_count":17,"open_issues_count":10,"forks_count":8,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-05-22T23:10:38.966Z","etag":null,"topics":["elasticsearch","graphql","mongodb","redis","spring-boot","spring-plugin"],"latest_commit_sha":null,"homepage":"https://rajadilipkolli.gitbook.io/my-spring-boot-experiments/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rajadilipkolli.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"Code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-18T00:04:43.000Z","updated_at":"2024-05-22T22:16:01.000Z","dependencies_parsed_at":"2023-09-24T09:40:31.636Z","dependency_job_id":"3c6a9126-657e-46f4-ac43-d81ce5730895","html_url":"https://github.com/rajadilipkolli/my-spring-boot-experiments","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajadilipkolli%2Fmy-spring-boot-experiments","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajadilipkolli%2Fmy-spring-boot-experiments/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajadilipkolli%2Fmy-spring-boot-experiments/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rajadilipkolli%2Fmy-spring-boot-experiments/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rajadilipkolli","download_url":"https://codeload.github.com/rajadilipkolli/my-spring-boot-experiments/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243858929,"owners_count":20359260,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elasticsearch","graphql","mongodb","redis","spring-boot","spring-plugin"],"created_at":"2024-10-14T04:13:10.977Z","updated_at":"2025-03-17T09:30:51.981Z","avatar_url":"https://github.com/rajadilipkolli.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/rajadilipkolli/my-spring-boot-experiments)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\n\u003c!-- TOC --\u003e\n* [spring boot integration experiments](#spring-boot-integration-experiments)\n  * [Tech Stack](#tech-stack)\n  * [Useful Docker Commands](#useful-docker-commands)\n  * [Useful git Commands](#useful-git-commands)\n\u003c!-- TOC --\u003e\n\n# spring boot integration experiments\n\nThe following table list all sample codes related to the spring boot integrations.\n\n| Name                                                                                                                    | Description \t\t                                                                                                                                                                                                 | Status \t\t |\n|-------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|\n| [Ultimate Redis Implementation](./boot-ultimate-redis)                                                                  | The application, discovers ways of interacting with Redis with different TTLs for different Caches                                                                                                             | Completed |\n| [Connecting to multiple data sources](./jpa/boot-data-multipledatasources)                                              | The application, demonstrates the way spring boot application connects with multiple databases,connection pooling and both type of database migrations (liquibase and flyway)                                  | Completed |\n| [Implementation of Strategy Design Pattern](./boot-strategy-plugin)                                                     | The application, demonstrates strategy pattern in spring application and build native image using GraalVM, use a main class to start up the application and builds nativeImage                                 | Completed |\n| [Archunit Implementation](./boot-api-archunit-sample)                                                                   | The application, demonstrates how to apply arch unit rules to the spring boot project                                                                                                                          | Completed |\n| [Hibernate Envers Implementation using spring data JPA](./jpa/boot-data-envers)                                         | The application, demonstrates how to apply hibernate envers to the spring boot project, monitor the system and alert when CPU usage is high or when system is down                                             | Completed |\n| [Graph QL implementation using webflux](./graphql/boot-graphql-webflux)                                                 | The application, demonstrates the way to connect to database using graph ql using webflux                                                                                                                      | Completed |\n| [Hibernate 2nd Level Cache Using Redis](./jpa/boot-hibernate2ndlevelcache-sample)                                       | The application, demonstrates how to apply Hibernate 2nd level cache using redis in a spring boot project , testing using QueryCounting, implemented hypersistence Repository instead of default JPARepository | Completed |\n| [Read Replica Postgres](./jpa/boot-read-replica-postgresql)                                                             | The application, demonstrates saving the data in Postgresql and then read from replica instance                                                                                                                | Completed |\n| [BackgroundJobs and Scheduling using Jobrunr](./scheduler/boot-scheduler-jobrunr)                                       | The application, demonstrates running background jobs and scheduling the tasks using [Jobrunr](https://www.jobrunr.io/en/)                                                                                     | Completed |\n| [MultiTenancy DB Based](./jpa/multitenancy/multitenancy-db)                                                             | The application, demonstrates running multi tenancy in JPA using different databases but same DDLs and DMLs                                                                                                    | Completed |\n| [MultiTenancy Partition Based](./jpa/multitenancy/partition)                                                            | The application, demonstrates running multi tenancy in JPA using partition based i.e Shared Database with Shared table                                                                                         | Completed |\n| [MultiTenancy Schema Based](./jpa/multitenancy/schema)                                                                  | The application, demonstrates running multi tenancy in JPA using schema based i.e Shared Database with Separate Schema                                                                                         | Completed |\n| [MultiTenancy with multipledatsources](./jpa/multitenancy/multidatasource-multitenancy)                                 | The application, demonstrates running multi tenancy in JPA using all strategies using multidatasources                                                                                                         | Completed |\n| [mongodb-elasticsearch-integration](./boot-mongodb-elasticsearch)                                                       | The application, demonstrates saving the data in MongoDb and then searching in ElasticSearch for quick Search, GeoSpatial Search                                                                               | WIP       |\n| [spring-boot-graphql-querydsl](./graphql/boot-graphql-querydsl)                                                         | The application, demonstrates the way to connect to database using graph ql and querydsl                                                                                                                       | WIP       |\n| [spring-boot-graphql-webmvc](./graphql/boot-graphql-webmvc)                                                             | The application, demonstrates how to apply graphql concepts to the spring boot project                                                                                                                         | WIP       |\n| [Choas Engineering Principles](./boot-choas-monkey)                                                                     | The application, demonstrates how to apply choas engineering concepts to the spring boot project, test using Gatling to demonstrate the difference                                                             | WIP       |\n| [Feature Toggles](./boot-togglz-sample)                                                                                 | The application, demonstrates how to apply feature toggles concepts to the spring boot project                                                                                                                 | WIP       |\n| [Rabbit Mq Implementation](./boot-rabbitmq-thymeleaf)                                                                   | The application, demonstrates how rabbitmq works with producer side acknowledgement                                                                                                                            | Completed |\n| [Spring Batch Implementation](./batch-boot-jpa-sample)                                                                  | The application, demonstrates implementing Spring Batch 5 using simple config and creating batch tables using liquibase                                                                                        | Completed |\n| [Rest API Documentation with examples](./boot-rest-docs-sample)                                                         | This application, demonstrates ability to generate pdf API documentation using spring rest docs                                                                                                                | Completed |  \n| [Custom SequenceNumber and LazyConnectionDataSourceProxy for db connection improvement](./jpa/boot-data-customsequence) | This application, demonstrated ability to create custom sequences, using datasource-proxy and LazyConnectionDataSourceProxy for db connection improvement using mariadb                                        | Completed |\n| [KeySet pagination and dynamic search](./jpa/boot-data-keyset-pagination/blaze-persistence/)                                               | Implements KeySet Pagination using Blaze Persistence and enable dynamic search using specifications                                                                                                             | Completed |\n\nFor More info about this repository, Please visit [here](https://rajadilipkolli.github.io/my-spring-boot-experiments/)\n\n### Tech Stack\nRepo is built on the following main stack:\n\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/995/K85ZWV2F.png' alt='Java'/\u003e [Java](https://www.java.com) – Languages\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/1209/javascript.jpeg' alt='JavaScript'/\u003e [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript) – Languages\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/2271/default_068d33483bba6b81ee13fbd4dc7aab9780896a54.png' alt='SQL'/\u003e [SQL](https://en.wikipedia.org/wiki/SQL) – Languages\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/1011/n1JRsFeB_400x400.png' alt='Node.js'/\u003e [Node.js](http://nodejs.org/) – Frameworks (Full Stack)\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/5807/default_cbd8ab670309059d7e315252d307d409aa40d793.png' alt='Project Reactor'/\u003e [Project Reactor](https://projectreactor.io/) – Java Tools\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/3881/da8da0c0e6dfbfc596f787ade49381a6_400x400.png' alt='QueryDSL'/\u003e [QueryDSL](http://www.querydsl.com/) – Java Tools\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/2006/spring-framework-project-logo.png' alt='Spring Framework'/\u003e [Spring Framework](https://spring.io/projects/spring-framework) – Frameworks (Full Stack)\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/1021/lxEKmMnB_400x400.jpg' alt='jQuery'/\u003e [jQuery](http://jquery.com/) – Javascript UI Libraries\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/21275/default_078eb0ae2b56280a937ed073a3ba4332291f9ba8.png' alt='Cloud DB for Mysql'/\u003e [Cloud DB for Mysql](https://www.ncloud.com/product/database/cloudDbMysql) – SQL Database as a Service\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/3105/h2-logo_square_400x400.png' alt='H2 Database'/\u003e [H2 Database](http://www.h2database.com/) – Databases\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/1398/y1As8_s5_400x400.jpg' alt='Liquibase'/\u003e [Liquibase](https://www.liquibase.com) – Database Tools\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/1615/mariadb-logo-400x400.png' alt='MariaDB'/\u003e [MariaDB](https://mariadb.com/) – Databases\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/1027/sql_server.png' alt='Microsoft SQL Server'/\u003e [Microsoft SQL Server](http://microsoft.com/sqlserver) – Databases\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/1030/leaf-360x360.png' alt='MongoDB'/\u003e [MongoDB](http://www.mongodb.com/) – Databases\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/1025/logo-mysql-170x170.png' alt='MySQL'/\u003e [MySQL](http://www.mysql.com) – Databases\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/1028/ASOhU5xJ.png' alt='PostgreSQL'/\u003e [PostgreSQL](http://www.postgresql.org/) – Databases\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/1061/default_df93e9a30d27519161b39d8c1d5c223c1642d187.jpg' alt='RabbitMQ'/\u003e [RabbitMQ](http://www.rabbitmq.com/) – Message Queue\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/1031/default_cbce472cd134adc6688572f999e9122b9657d4ba.png' alt='Redis'/\u003e [Redis](http://redis.io/) – In-Memory Databases\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/11394/appsync.png' alt='Serverless AppSync'/\u003e [Serverless AppSync](https://github.com/serverless-components/aws-app-sync) – GraphQL Tools\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/7624/IG6D4Ro2_400x400.png' alt='Spring Data'/\u003e [Spring Data](https://spring.io/projects/spring-data) – Database Tools\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/2279/jooq-logo-white-750x750-padded.png' alt='jOOQ'/\u003e [jOOQ](http://www.jooq.org) – Database Tools\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/190/CvqrSSFs_400x400.jpg' alt='CircleCI'/\u003e [CircleCI](https://circleci.com/) – Continuous Integration\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/586/n4u37v9t_400x400.png' alt='Docker'/\u003e [Docker](https://www.docker.com/) – Virtual Machine Platforms \u0026 Containers\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/3136/docker-compose.png' alt='Docker Compose'/\u003e [Docker Compose](https://github.com/docker/compose) – Container Tools\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/2662/kWjFjx3K_400x400.jpg' alt='FindBugs'/\u003e [FindBugs](http://findbugs.sourceforge.net/) – Code Review\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/11563/actions.png' alt='GitHub Actions'/\u003e [GitHub Actions](https://github.com/features/actions) – Continuous Integration\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/975/gradlephant-social-black-bg.png' alt='Gradle'/\u003e [Gradle](https://www.gradle.org/) – Java Build Tools\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/2645/default_8f9d552b144493679449b16c79647da5787e808b.jpg' alt='Grafana'/\u003e [Grafana](http://grafana.org/) – Monitoring Tools\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/670/jenkins.png' alt='Jenkins'/\u003e [Jenkins](http://jenkins-ci.org/) – Continuous Integration\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/1722/Image_2019-05-20_at_4.53.31_PM.png' alt='Kibana'/\u003e [Kibana](https://www.elastic.co/kibana) – Monitoring Tools\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/2923/05518ecaa42841e834421e9d6987b04f_400x400.png' alt='Logback'/\u003e [Logback](https://logback.qos.ch/) – Log Management\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/10079/loki.png' alt='Loki'/\u003e [Loki](https://github.com/grafana/loki) – Logging Tools\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/2501/default_3cf1b307194b26782be5cb209d30360580ae5b3c.png' alt='Prometheus'/\u003e [Prometheus](http://prometheus.io/) – Monitoring Tools\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/3276/xWt1RFo6_400x400.jpg' alt='Apache Camel'/\u003e [Apache Camel](https://camel.apache.org/) – Platform as a Service\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/6429/alpine_linux.png' alt='Alpine Linux'/\u003e [Alpine Linux](https://www.alpinelinux.org/) – Operating Systems\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/3633/ZBMmmvP1_400x400.jpg' alt='Base'/\u003e [Base](https://getbase.com/) – CRM\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/841/Image_2019-05-20_at_4.58.04_PM.png' alt='Elasticsearch'/\u003e [Elasticsearch](https://www.elastic.co/products/elasticsearch) – Search as a Service\n- \u003cimg width='25' height='25' src='https://img.stackshare.io/service/4631/default_c2062d40130562bdc836c13dbca02d318205a962.png' alt='Shell'/\u003e [Shell](https://en.wikipedia.org/wiki/Shell_script) – Shells\n\nFull tech stack [here](/techstack.md)\n\n### Useful Docker Commands\n\n\u003e  Start postgres and pgadmin\n ```shell\n docker compose up postgres pgadmin4\n ```\n\u003e  Clean up everything using\n ```shell\n docker system prune -a -f --volumes\n ```\n\u003e  Claim unused volumes\n ```shell\n docker volume prune\n ```\n\u003e Running container\n ```shell\n docker container ls\n ```\n\n### Useful git Commands\n\nHow to overwrite local changes with git pull\n\n\u003e Stash local changes:\n ```shell\n $ git stash\n ```\n\u003e Pull changes from remote:\n ```shell\n $ git pull\n ```\n\nHow to revert the changes that are pushed to remove\n```shell\n$ git revert $hash\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajadilipkolli%2Fmy-spring-boot-experiments","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frajadilipkolli%2Fmy-spring-boot-experiments","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frajadilipkolli%2Fmy-spring-boot-experiments/lists"}