diff --git a/persistence-modules/spring-jpa-2/allTenants/tenant_1.properties b/persistence-modules/spring-jpa-2/allTenants/tenant_1.properties
new file mode 100644
index 0000000000..141cb8f3d8
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/allTenants/tenant_1.properties
@@ -0,0 +1,5 @@
+name=tenant_1
+datasource.url=jdbc:postgresql://localhost:5432/tenant1
+datasource.username=postgres
+datasource.password=123456
+datasource.driver-class-name=org.postgresql.Driver
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/allTenants/tenant_2.properties b/persistence-modules/spring-jpa-2/allTenants/tenant_2.properties
new file mode 100644
index 0000000000..6069da5822
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/allTenants/tenant_2.properties
@@ -0,0 +1,5 @@
+name=tenant_2
+datasource.url=jdbc:postgresql://localhost:5432/tenant2
+datasource.username=postgres
+datasource.password=123456
+datasource.driver-class-name=org.postgresql.Driver
\ No newline at end of file
diff --git a/persistence-modules/spring-jpa-2/pom.xml b/persistence-modules/spring-jpa-2/pom.xml
index 19f5a8acc2..de42f94856 100644
--- a/persistence-modules/spring-jpa-2/pom.xml
+++ b/persistence-modules/spring-jpa-2/pom.xml
@@ -21,6 +21,11 @@
spring-boot-starter
${spring-boot.version}
+
+ org.springframework.boot
+ spring-boot-starter-web
+ ${spring-boot.version}
+
org.springframework.boot
spring-boot-starter-data-jpa
@@ -42,6 +47,16 @@
spring-context
${org.springframework.version}
+
+ org.springframework.boot
+ spring-boot-starter-security
+ ${spring-boot.version}
+
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+
org.hibernate
@@ -53,6 +68,12 @@
h2
${h2.version}
+
+ org.postgresql
+ postgresql
+ 42.4.0
+ runtime
+
org.apache.tomcat
tomcat-dbcp
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/multitenant/MultiTenantApplication.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/multitenant/MultiTenantApplication.java
new file mode 100644
index 0000000000..236b53f570
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/multitenant/MultiTenantApplication.java
@@ -0,0 +1,14 @@
+package com.baeldung.multitenant;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
+public class MultiTenantApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(MultiTenantApplication.class, args);
+ }
+
+}
diff --git a/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/multitenant/config/MultitenantConfiguration.java b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/multitenant/config/MultitenantConfiguration.java
new file mode 100644
index 0000000000..64d66f5cc9
--- /dev/null
+++ b/persistence-modules/spring-jpa-2/src/main/java/com/baeldung/multitenant/config/MultitenantConfiguration.java
@@ -0,0 +1,53 @@
+package com.baeldung.multitenant.config;
+
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.jdbc.DataSourceBuilder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
+
+import javax.sql.DataSource;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+@Configuration
+public class MultitenantConfiguration {
+
+ @Bean
+ @ConfigurationProperties(prefix = "tenants")
+ public DataSource dataSource() {
+ File[] files = Paths.get("allTenants").toFile().listFiles();
+ Map