# Blog of SivaLabs > Java, Spring Boot, JPA, Hibernate, SQL, REST API, Microservices, Architecture, CI/CD, Docker, Kubernetes, Cloud, and DevOps Tutorials You can find [more information about this site here](/about). ## Programmatic access Agents and automated tools can access this blog's content in clean Markdown without HTML chrome: - Fetch [llms.txt](https://www.sivalabs.in/llms.txt) for a structured index of all articles with direct links to their `.md` versions. - Fetch [llms-full.txt](https://www.sivalabs.in/llms-full.txt) to ingest the entire blog corpus in a single Markdown document. - Append `.md` to any article URL (or follow the `` tag in any page's HTML ``) to retrieve the raw Markdown twin of that article. ## All articles ### 2026 - [Harness Engineering for Java and Spring Boot Applications](https://www.sivalabs.in/blog/harness-engineering-for-java-and-spring-boot-applications.md) - [Spring Boot Tips: Easiest Way To Provide Environment Variables](https://www.sivalabs.in/blog/spring-boot-tips-easiest-way-to-provide-env-vars.md) - [Spring AI : Advisors API](https://www.sivalabs.in/blog/spring-ai-advisors-api.md) - [Spring AI : Chat Memory](https://www.sivalabs.in/blog/spring-ai-chat-memory.md) - [Spring AI : Structured Output](https://www.sivalabs.in/blog/spring-ai-structured-output.md) - [Spring AI : Chat with LLMs](https://www.sivalabs.in/blog/spring-ai-chat-with-llms.md) - [Support Me](https://www.sivalabs.in/support.md) - [Courses](https://www.sivalabs.in/courses.md) - [Conferences](https://www.sivalabs.in/conferences.md) - [Books](https://www.sivalabs.in/books.md) - [Projects](https://www.sivalabs.in/projects.md) - [AI Agents Are Doing The Heavy Lifting, Then Why Am I So Tired?](https://www.sivalabs.in/blog/ai-agents-are-doing-the-heavy-lifting.md) - [Confessions of an AI Agent FOMO Survivor](https://www.sivalabs.in/blog/confessions-of-an-ai-agent-fomo-survivor.md) - [Don't Pollute Your Spring Boot Main EntryPoint Class](https://www.sivalabs.in/blog/dont-pollute-spring-boot-main-class.md) - [A Few Hard Learned Lessons On Structuring Spring Boot Applications](https://www.sivalabs.in/blog/a-few-hard-learned-lessons-on-structuring.md) - [Before You Judge, Get Curious](https://www.sivalabs.in/blog/before-you-judge-get-curious.md) - [Feeling Left Behind in Tech? This Is Your 90-Day Comeback Plan](https://www.sivalabs.in/blog/feel-left-behind-in-tech-this-is-90-day-comeback-plan.md) - [Stepping into Crazy AI World](https://www.sivalabs.in/blog/stepping-into-crazy-ai-world.md) - [The Power of Value Objects](https://www.sivalabs.in/blog/the-power-of-value-objects.md) ### 2025 - [Announcing FeatureTracker Application](https://www.sivalabs.in/blog/feature-tracker-application-announcement.md) - [Protect Your Mental Health While Being On Social Media](https://www.sivalabs.in/blog/protecting-your-mental-health-while-being-on-social-media.md) - [You Can Code Offline With Local AI(Ollama)](https://www.sivalabs.in/blog/code-offline-with-local-ai-ollama.md) - [Spring Boot + Testcontainers Tests at Jet Speed](https://www.sivalabs.in/blog/run-spring-boot-testcontainers-tests-at-jet-speed.md) ### 2024 - [My First Impression of Google's NotebookLM](https://www.sivalabs.in/blog/my-first-impression-of-notebooklm.md) - [Running your own Spring Initializr and using it from IntelliJ IDEA](https://www.sivalabs.in/blog/running-custom-spring-initializr.md) - [Master the Art of Requesting Technical Help: A Handy Email Template](https://www.sivalabs.in/blog/an-email-template-of-asking-for-technical-help.md) - [About Me](https://www.sivalabs.in/about.md) - [Mastering Spring Boot in 5 Stages](https://www.sivalabs.in/blog/mastering-spring-boot-in-5-stages.md) - [Thymeleaf Layouts using Fragment Expressions in Spring Boot GraalVM Native Image](https://www.sivalabs.in/blog/thymeleaf-layouts-using-fragment-expressions.md) - [Spring AI RAG using Embedding Models and Vector Databases](https://www.sivalabs.in/blog/spring-ai-rag-using-embedding-models-vector-databases.md) - [Getting Started with Spring AI and OpenAI](https://www.sivalabs.in/blog/getting-started-with-spring-ai-and-open-ai.md) - [LangChain4j Retrieval-Augmented Generation (RAG) Tutorial](https://www.sivalabs.in/blog/langchain4j-retrieval-augmented-generation-tutorial.md) - [LangChain4j AiServices Tutorial](https://www.sivalabs.in/blog/langchain4j-ai-services-tutorial.md) - [Generative AI Conversations using LangChain4j ChatMemory](https://www.sivalabs.in/blog/generative-ai-conversations-using-langchain4j-chat-memory.md) - [Getting Started with Generative AI using Java, LangChain4j, OpenAI and Ollama](https://www.sivalabs.in/blog/getting-started-with-generative-ai-using-java-langchain4j-openai-ollama.md) - [Should I use a framework or libraries?](https://www.sivalabs.in/blog/should-i-use-framework-or-libraries.md) ### 2023 - [It's time to apply KISS principle to career](https://www.sivalabs.in/blog/time-to-apply-kiss-principle-to-career.md) - [Go for Java/Spring Boot Developers](https://www.sivalabs.in/blog/go-for-java-springboot-developers.md) - [My First Year at AtomicJar as a Developer Advocate](https://www.sivalabs.in/blog/my-first-year-at-atomicjar.md) - [Spring Boot + jOOQ Tutorial - 5 : Fetching Many-to-Many Relationships](https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-many-to-many-associations.md) - [Spring Boot + jOOQ Tutorial - 4 : Fetching One-to-Many Relationships](https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-one-to-many-associations.md) - [Spring Boot + jOOQ Tutorial - 3 : Fetching One-to-One Relationships](https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-fetching-one-to-one-associations.md) - [Spring Boot + jOOQ Tutorial - 2 : Implementing CRUD Operations](https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-crud-operations.md) - [Contact Me](https://www.sivalabs.in/blog/contact-me.md) - [Spring Boot + jOOQ Tutorial - 1 : Getting Started](https://www.sivalabs.in/blog/spring-boot-jooq-tutorial-getting-started.md) - [Spring Security OAuth 2 Tutorial - 10 : Service to Service Communication using Client Credentials Flow](https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-service-to-service-communication-using-client-credentials-flow.md) - [Spring Security OAuth 2 Tutorial - 9 : Invoking Secured Resource Server APIs from Client Application](https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-integrating-client-and-resource-server.md) - [Spring Security OAuth 2 Tutorial - 8 : Securing Resource Server](https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-securing-resource-server.md) - [Spring Security OAuth 2 Tutorial - 7 : Securing Spring MVC Client Application](https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-securing-springmvc-client-application.md) - [Spring Security OAuth 2 Tutorial - 6 : Microservices Sample Project Setup](https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-microservices-project-setup.md) - [Spring Security OAuth 2 Tutorial - 5 : Implicit & Resource Owner Password Credentials Flows](https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-implicit-and-resource-owner-password-credentials-flow.md) - [Spring Security OAuth 2 Tutorial - 4 : Authorization Code Flow with PKCE](https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-authorization-code-flow-with-pkce.md) - [Spring Security OAuth 2 Tutorial - 3 : Client Credentials Flow](https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-client-credentials-flow.md) - [Spring Security OAuth 2 Tutorial - 2 : Authorization Code Flow](https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-authorization-code-flow.md) - [Spring Security OAuth 2 Tutorial - 1 : Getting familiar with OAuth 2 concepts](https://www.sivalabs.in/blog/spring-security-oauth2-tutorial-introduction.md) - [The new JdbcClient Introduced in Spring Framework 6.1](https://www.sivalabs.in/blog/spring-boot-jdbcclient-tutorial.md) - [Spring Boot REST API Best Practices - Part 4](https://www.sivalabs.in/blog/spring-boot-rest-api-best-practices-part-4.md) - [Spring Boot REST API Best Practices - Part 3](https://www.sivalabs.in/blog/spring-boot-rest-api-best-practices-part-3.md) - [Spring Boot REST API Best Practices - Part 2](https://www.sivalabs.in/blog/spring-boot-rest-api-best-practices-part-2.md) - [Spring Boot REST API Best Practices - Part 1](https://www.sivalabs.in/blog/spring-boot-rest-api-best-practices-part-1.md) - [Spring Boot Flyway Database Migration Tutorial](https://www.sivalabs.in/blog/spring-boot-flyway-database-migration-tutorial.md) - [Spring Boot Database Transaction Management Tutorial](https://www.sivalabs.in/blog/spring-boot-database-transaction-management-tutorial.md) - [Spring Boot JdbcTemplate Tutorial](https://www.sivalabs.in/blog/spring-boot-jdbctemplate-tutorial.md) - [Spring Boot Profiles Tutorial](https://www.sivalabs.in/blog/spring-boot-profiles-tutorial.md) - [Spring Boot Logging Tutorial](https://www.sivalabs.in/blog/spring-boot-logging-tutorial.md) - [Spring Boot Application Configuration Tutorial](https://www.sivalabs.in/blog/spring-boot-application-configuration-tutorial.md) - [Spring Boot Testing Tutorial](https://www.sivalabs.in/blog/spring-boot-testing-tutorial.md) - [Privacy Policy](https://www.sivalabs.in/blog/privacy_policy.md) - [SivaLabs Weekly Newsletter - 2023, Week 29](https://www.sivalabs.in/blog/sivalabs-weekly-newsletter-2023-29.md) - [Getting Started with Spring Boot](https://www.sivalabs.in/blog/getting-started-with-spring-boot.md) - [Creating a Blog using Hugo, Asciidoc, and Netlify](https://www.sivalabs.in/blog/creating-blog-using-hugo-asciidoc-netlify.md) - [Spring Boot Tutorials](https://www.sivalabs.in/blog/spring-boot-tutorials.md) - [MyBatis Tutorials](https://www.sivalabs.in/blog/mybatis-tutorials.md) - [Microservices Tutorials](https://www.sivalabs.in/blog/microservices-tutorials.md) - [Kubernetes Tutorials](https://www.sivalabs.in/blog/kubernetes-tutorials.md) - [SivaLabs Weekly Newsletter - 2023, Week 28](https://www.sivalabs.in/blog/sivalabs-weekly-newsletter-2023-28.md) - [My Thoughts on DevOps, Platform Engineering, and FullStack Developer](https://www.sivalabs.in/blog/my-thoughts-on-devops-platform-engineering-and-fullstack-developer.md) - [Tomato Architecture - A Pragmatic Approach to Software Design](https://www.sivalabs.in/blog/tomato-architecture-pragmatic-approach-to-software-design.md) - [SivaLabs Weekly Newsletter - 2023, Week 27](https://www.sivalabs.in/blog/sivalabs-weekly-newsletter-2023-27.md) - [Sharing Thoughts and Knowledge via Twitter vs Blogging](https://www.sivalabs.in/blog/sharing-thoughts-and-knowledge-via-twitter-vs-blogging.md) - [A Tip for Debugging Tricky Software Bugs or Issues](https://www.sivalabs.in/blog/a-tip-for-debugging-tricky-software-bugs-issues.md) - [Should you use Lombok? Or, is it bad for you?](https://www.sivalabs.in/blog/should-you-use-lombok-or-is-it-bad-for-you.md) - [Announcing My "Spring Boot - The Missing Guide" Video Series on YouTube](https://www.sivalabs.in/blog/announcing-my-springboot-missing-guide-video-series.md) - [Why I think Go is more verbose than Java](https://www.sivalabs.in/blog/why-go-is-more-verbose-than-java.md) - [My Plans for 2023](https://www.sivalabs.in/blog/my-plans-for-2023.md) ### 2022 - [Spring Boot 3 : Error Responses using Problem Details for HTTP APIs](https://www.sivalabs.in/blog/spring-boot-3-error-reporting-using-problem-details.md) - [Using Java Records with Spring Boot 3](https://www.sivalabs.in/blog/using-java-records-with-spring-boot-3.md) - [Rethinking About My Social Media Usage](https://www.sivalabs.in/blog/rethinking-about-my-social-media-usage.md) - [Book Review : Cloud Native Spring in Action](https://www.sivalabs.in/blog/cloud-native-spring-in-action-book-review.md) - [How (not) to ask for Technical Help?](https://www.sivalabs.in/blog/how-to-not-to-ask-for-technical-help.md) - [My all-time favourite 20 inspiring Tech Talks](https://www.sivalabs.in/blog/my-all-time-favourite-20-inspiring-tech-talks.md) - [Announcing My "Spring Boot Tips Video Series" on YouTube](https://www.sivalabs.in/blog/announcing-my-springboot-tips-video-series.md) - [My attempt to understand why people perceive Java as complex](https://www.sivalabs.in/blog/my-attempt-to-understand-why-people-perceive-java-as-complex.md) ### 2021 - [Code simplicity by Abstraction vs Verbosity](https://www.sivalabs.in/blog/code-simplicity-by-abstraction-vs-verbosity.md) - [How I dealt with burn out?](https://www.sivalabs.in/blog/how-i-dealt-with-burnout.md) - [Kubernetes - Exposing Services to outside of Cluster using Ingress](https://www.sivalabs.in/blog/kubernetes-ingress.md) - [Kubernetes - Blue/Green Deployments](https://www.sivalabs.in/blog/kubernetes-blue-green-deployments.md) - [Kubernetes - Releasing a new version of the application using Deployment Rolling Updates](https://www.sivalabs.in/blog/kubernetes-deployment-rolling-updates.md) - [Getting Started with Kubernetes](https://www.sivalabs.in/blog/getting-started-with-kubernetes.md) - [Get Super Productive with Intellij File Templates](https://www.sivalabs.in/blog/get-super-productive-with-intellij-file-templates.md) - [Few things I learned the hard way in 15 years of my career](https://www.sivalabs.in/blog/few-things-i-learned-the-hardway-in-15-years-of-my-career.md) - [Tips to work at traditional enterprise organizations as consultant/contractor (and save your ass)](https://www.sivalabs.in/blog/tips-to-work-with-traditional-enterprise-organizations.md) - [My 2020 year review and plans for 2021](https://www.sivalabs.in/blog/my-2020-review-and-plans-for-2021.md) - [Improve JPA application performance using HypersistenceOptimizer](https://www.sivalabs.in/blog/improve-jpa-performance-using-hypersistence-optimizer.md) ### 2020 - [Quirks of Spring's @TestConfiguration](https://www.sivalabs.in/blog/quirks-of-spring-testconfiguration.md) - [Tutorials](https://www.sivalabs.in/tutorials.md) - [JOOQ Tutorials](https://www.sivalabs.in/blog/jooq-tutorials.md) - [My Thoughts on CleanCode, Simplicity, Automation and Empathy](https://www.sivalabs.in/blog/my-thoughts-on-cleancode-simplicity-automation-empathy.md) - [Philip's Testing Spring Boot Applications Masterclass Course Review](https://www.sivalabs.in/blog/philip-testing-spring-boot-applications-masterclass-course-review.md) - [LocalStack Spring Boot Starter Tutorial](https://www.sivalabs.in/blog/localstack-spring-boot-starter-tutorial.md) - [All the resources you ever need as a Java & Spring application developer](https://www.sivalabs.in/blog/all-the-resources-you-ever-need-as-a-java-spring-application-developer.md) - [GoLang from a Java developer perspective](https://www.sivalabs.in/blog/golang-from-a-java-developer-perspective.md) - [My proud moment as a mentor](https://www.sivalabs.in/blog/my-proud-moment-as-a-mentor.md) - [Remote debugging Spring Boot application](https://www.sivalabs.in/blog/remote-debugging-spring-boot-application.md) - [What I Learned in Week-14, 2020](https://www.sivalabs.in/blog/what-i-learned-2020-week-14.md) - [Imposing Code Structure Guidelines using ArchUnit](https://www.sivalabs.in/blog/impose-architecture-guidelines-using-archunit.md) - [What I Learned in Week-11, 2020](https://www.sivalabs.in/blog/what-i-learned-2020-week-11.md) - [Spring Boot Integration Testing using TestContainers Starter](https://www.sivalabs.in/blog/spring-boot-integration-testing-using-testcontainers-starter.md) - [Creating Yeoman based Spring Boot Generator](https://www.sivalabs.in/blog/creating-yeoman-based-springboot-generator.md) ### 2019 - [Testing REST APIs using Postman and Newman](https://www.sivalabs.in/blog/testing-rest-apis-with-postman-newman.md) - [Testing Spring Boot Applications](https://www.sivalabs.in/blog/spring-boot-testing.md) - [Kafka Tutorial - Producer and Consumer using Spring Boot](https://www.sivalabs.in/blog/kafka-tutorial-producer-consumer-using-spring-boot.md) - [Kafka Tutorial - Java Producer and Consumer](https://www.sivalabs.in/blog/kafka-tutorial-java-producer-consumer.md) - [Spring Boot Best Practices](https://www.sivalabs.in/blog/spring-boot-best-practices.md) ### 2018 - [MicroServices - Part 6 : Distributed Tracing with Spring Cloud Sleuth and Zipkin](https://www.sivalabs.in/blog/microservices-part-6-distributed-tracing-with-spring-cloud-sleuth-and-zipkin.md) - [MicroServices - Part 5 : Spring Cloud Zuul Proxy as API Gateway](https://www.sivalabs.in/blog/microservices-part-5-spring-cloud-zuul-proxy-as-api-gateway.md) - [MicroServices - Part 4 : Spring Cloud Circuit Breaker using Netflix Hystrix](https://www.sivalabs.in/blog/spring-cloud-netflix-circuit-breaker.md) - [MicroServices - Part 3 : Spring Cloud Service Registry and Discovery](https://www.sivalabs.in/blog/microservices-springcloud-eureka.md) - [MicroServices - Part 2 : Configuration Management with Spring Cloud Config and Vault](https://www.sivalabs.in/blog/microservices-part-2-configuration-management-spring-cloud-config-vault.md) - [MicroServices using Spring Boot & Spring Cloud – Part 1 : Overview](https://www.sivalabs.in/blog/microservices-using-springboot-spring-cloud-part-1-overview.md) - [Why Spring Boot is so popular and how to learn Spring Boot effectively?](https://www.sivalabs.in/blog/why-springboot-so-popular-how-to-learn-springboot.md) - [Spring Boot Messaging with RabbitMQ](https://www.sivalabs.in/blog/springboot-messaging-rabbitmq.md) - [Session Management using Spring Session with JDBC DataStore](https://www.sivalabs.in/blog/session-management-using-spring-session-jdbc-datastore.md) - [CI/CD for Spring Boot applications using Travis-CI](https://www.sivalabs.in/blog/ci-cd-springboot-applications-using-travis-ci.md) - [How was my year 2017 and my plans for 2018](https://www.sivalabs.in/blog/how-was-my-year-2017-and-plan-for-2018.md) ### 2017 - [My Review of Vlad Mihalcea's High-Performance Java Persistence book](https://www.sivalabs.in/blog/my-review-of-vlad-mihalceas-high-performance-java-persistence-book.md) - [Spring Cloud Tutorials – Auto Refresh Config Changes using Spring Cloud Bus](https://www.sivalabs.in/blog/spring-cloud-tutorials-auto-refresh-config-changes-using-spring-cloud-bus.md) - [Spring Cloud Tutorials – Introduction to Spring Cloud Config Server](https://www.sivalabs.in/blog/spring-cloud-tutorials-introduction-to-spring-cloud-config-server.md) ### 2016 - [Getting Started with Spring Boot in Intellij IDEA Community Edition](https://www.sivalabs.in/blog/getting-started-springboot-intellij-idea-community-edition.md) - [Update on Spring Boot : Learn By Example book](https://www.sivalabs.in/blog/update-springboot-learn-example-book.md) - [My New Book Spring Boot : Learn By Example Published Today](https://www.sivalabs.in/blog/my-new-book-springboot-learn-by-example.md) - [Videos](https://www.sivalabs.in/blog/videos.md) - [Creating Custom Spring Boot Starter for Twitter4j](https://www.sivalabs.in/blog/creating-custom-springboot-starter-for.md) - [Spring Boot : Working with JOOQ](https://www.sivalabs.in/blog/springboot-working-with-jooq.md) - [Spring Boot : Working with MyBatis](https://www.sivalabs.in/blog/springboot-working-with-mybatis.md) - [Spring Boot : Working with JdbcTemplate](https://www.sivalabs.in/blog/springboot-working-with-jdbctemplate.md) - [How Spring Boot AutoConfiguration magic works?](https://www.sivalabs.in/blog/how-springboot-autoconfiguration-magic.md) - [Why Spring Boot?](https://www.sivalabs.in/blog/why-springboot.md) - [Retrying Method Execution using Spring AOP](https://www.sivalabs.in/blog/retrying-method-execution-using-spring-aop.md) ### 2015 - [My Life as a Software Developer in India](https://www.sivalabs.in/blog/my-life-as-software-developer-in-india.md) - [A Developers Perspective on Spring vs JavaEE](https://www.sivalabs.in/blog/a-developers-perspective-on-spring-vs-javaee.md) - [Spring Boot Training](https://www.sivalabs.in/trainings/springboot.md) - [Core Java Training](https://www.sivalabs.in/trainings/corejava.md) ### 2014 - [Can MicroServices Architecture Solve All Your Problems?](https://www.sivalabs.in/blog/can-microservices-architecture-solve-all-your-problems.md) ### 2013 - [Clean Code: Don't mix different levels of abstractions](https://www.sivalabs.in/blog/clean-code-dont-mix-different-levels-of-abstractions.md) - [PrimeFaces Beginner's Guide book published](https://www.sivalabs.in/blog/primefaces-beginners-guide-book-published.md) - [Packt Publishing "Java Persistence With MyBatis3" published](https://www.sivalabs.in/blog/packt-publishing-java-persistence-with-mybatis3-published.md) ### 2012 - [A bunch of Maven Archetypes for Spring based Projects](https://www.sivalabs.in/blog/a-bunch-of-maven-archetypes-for-spring-based-projects.md) - [MyBatis Tutorial : Part4 – Spring Integration](https://www.sivalabs.in/blog/mybatis-tutorial-part4-spring-integration.md) - [MyBatis Tutorial: Part 3 – Mapping Relationships](https://www.sivalabs.in/blog/mybatis-tutorial-part-3-mapping-relationships.md) - [MyBatis Tutorial: Part-2: CRUD operations Using Annotations](https://www.sivalabs.in/blog/mybatis-tutorial-part-2-crud-operations-using-annotations.md) - [MyBatis Tutorial: Part1 – CRUD Operations](https://www.sivalabs.in/blog/mybatis-tutorial-part1-crud-operations.md) - [Keep The Code Clean: WatchDog & SpotTheBug Approach](https://www.sivalabs.in/blog/keep-code-clean-watchdog-spotthebug.md) ### 2011 - [When to use RequestDispatcher.forward() and response.sendRedirect()?](https://www.sivalabs.in/blog/when-to-use-requestdispatcherforward.md) - [Are frameworks making developers dumb?](https://www.sivalabs.in/blog/frameworks-making-developers-dumb.md) - [10 things to become an outstanding Java developer](https://www.sivalabs.in/blog/10-things-to-become-outstanding-java.md) ### 2008 - [Welcome note](https://www.sivalabs.in/blog/welcome-note.md)