DEV Community

Rahul Bhatt
Rahul Bhatt

Posted on

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

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.

Top comments (0)