Day 1 of My Spring Boot Multitenancy Starter: Contexts, Filters, and Auto-Config
Rahul Bhatt

Rahul Bhatt @rahulsbhatt

About: Software Engineer

Joined:
Jun 16, 2020

Day 1 of My Spring Boot Multitenancy Starter: Contexts, Filters, and Auto-Config

Publish Date: Jun 22
0 0

Day 1 of My Spring Boot Multitenancy Starter: Contexts, Filters, and Auto-Config

After Day 0’s emotional ignition, Day 1 was about structure, clarity, and hands-on bootstrapping.


🎯 Goal

Scaffold the foundational skeleton of a plug-and-play Spring Boot multitenancy starter — just like how Spring Boot itself feels.


🧱 What I Built Today

🧠 Core Concepts Implemented

  • Thread-safe TenantContextHolder using ThreadLocal
  • Pluggable TenantResolver interface (subdomain strategy default)
  • TenantFilter to set/clear context per request
  • TenantDefinition (record) to hold metadata like tenantId, creds, etc.
  • TenantRegistry + InMemoryTenantRegistry to register and fetch tenants
  • TenantRoutingDataSource to delegate dynamically
  • DataSourceFactory to build isolated HikariDataSources per tenant
  • Custom YAML props via HikariTenantPoolProperties
  • Spring Boot AutoConfig:
    • MultitenancyAutoConfiguration
    • TenantRegistryAutoConfig
    • TenantDataSourceAutoConfig
  • @EnableMultitenancy annotation to wire everything

🧪 Tests Added

  • TenantContextTest — validate isolation
  • TenantContextLeakTest — simulate misuse
  • TenantContextConcurrencyTest — 100-thread stress test

🧠 What I Learned Today

🔹 Java Concurrency

Built a cheat-sheet on:

  • ThreadLocal
  • ExecutorService, CountDownLatch, AtomicBoolean

🔹 Maven Structuring

  • Local publish using mvn install
  • Clean starter module structure
  • IDE tricks for IntelliJ Maven + .iml

🔹 Spring Boot Internals

  • @ImportAutoConfiguration flow
  • AutoConfiguration.imports mechanism
  • Clean starter design, Spring-style

📁 Folder Structure

multi-tenant-springboot-starter/
├── pom.xml
├── starter/
│ ├── pom.xml
│ └── src/main/java/org/nirvikalpa/...
│ └── src/test/java/org/nirvikalpa/...
├── demo/ # coming tomorrow


🧭 Next Steps (Day 2 Plan)

  • Build a tenant onboarding workflow
  • Wire demo app to consume the starter
  • Expose /health per-tenant endpoint
  • Reflect in Ego Log #002

🔗 Repo: github link

Thanks for following my journey.

This is more than code — it's my architectural diary.

Comments 0 total

    Add comment