Skip to content

Latest commit

 

History

History

multidatasource-multitenancy

Multi DataSource & MultiTenancy

Demonstrates a scenario where a single Spring Boot application connects to multiple databases and also implements multi-tenant logic (schema-based or DB-based).


Application Flow

---
title: Application Data fetching strategy
---
flowchart TD
    A([Appication]) -->|Get Data| B{Where should I get data}
    B --> |primary| C[(Oracle)]
    B --> |secondary| D[(Postgres)]
    C --> |TenantId| E[Discriminator based MultiTenancy]
    D --> |Schema| F[Schema based MultiTenancy]
    E --> |Choose Tenant |G{tenant1 or tenenat2}
    F --> |Choose Schema |H{schema1 or schema2}
    G --> I(((END)))
    H --> I
Loading

How It Works

  1. Multiple DataSources: Oracle for certain domain objects, Postgres for others.
  2. MultiTenancy: Switches which schema or DB to use based on an incoming tenant identifier.
  3. TenantInterceptor: Captures request-scope tenant info and sets it in the TenantIdentifierResolver.

Run tests

./mvnw clean verify

Run locally

docker-compose -f docker/docker-compose.yml up -d
./mvnw spring-boot:run -Dspring-boot.run.profiles=local

Useful Links