Java 实践:Spring Boot 实现多租户理念
最编程
2024-06-03 20:19:53
...
@Configuration
public class DataSourceConfig {
@Bean
@Primary
@ConfigurationProperties(prefix = "spring.datasource")
public DataSourceProperties dataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@Primary
public DataSource dataSource(DataSourceProperties properties, @Qualifier("multiTenantRoutingDataSource") DataSource multiTenantDataSource) {
HikariDataSource dataSource = properties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
if (multiTenantDataSource instanceof HikariDataSource) {
((HikariDataSource) dataSource).addHealthCheckRegistry(((HikariDataSource) multiTenantDataSource).getHealthCheckRegistry());
}
return dataSource;
}
@Bean
public DataSource multiTenantRoutingDataSource(DataSource defaultDataSource) {
Map<Object, Object> targetDataSources = new ConcurrentHashMap<>();
DynamicRoutingDataSource dataSource = new DynamicRoutingDataSource();
dataSource.setDefaultTargetDataSource(defaultDataSource);
dataSource.setTargetDataSources(targetDataSources);
dataSource.afterPropertiesSet();
return dataSource;
}
// 添加租户数据源
public void addTenantDataSource(String tenantId, DataSource dataSource) {
((DynamicRoutingDataSource) multiTenantRoutingDataSource).addDataSource(tenantId, dataSource);
}
// 租户数据源切换AOP
@Aspect
@Component
public class TenantDataSourceAspect {
@Before("@annotation(com.example.annotation.ChangeTenant)")
public void changeDataSource(JoinPoint joinPoint, ChangeTenant annotation) {
// 获取当前租户ID并切换数据源
}
}
}
上一篇: 多租户、组织结构
推荐阅读
-
Java版商城的运营设置:采用Spring Cloud+Spring Boot+Mybatis+Uniapp的技术,实现B2B2C和O2O模式的多商家入驻商城、直播带货商城和电子商务平台。
-
Spring Boot 可轻松实现多租户架构!
-
Spring Boot 可以优雅地实现多租户架构,非常简单!
-
Java 实践:Spring Boot 实现多租户理念
-
使用 Spring Boot 和 Spring Cloud 实现多租户架构:支持应用程序的多租户部署和管理 - VI.总结回顾
-
Spring Boot 集成 Mybatis-Plus 多租户架构实践
-
Spring Boot 构建多租户系统,实现数据源的动态切换
-
Spring Boot 多租户架构的优雅实现:概念与实践
-
Spring Boot JPA MySQL 多租户系统第 1 部分:基本实现
-
Java 实践:使用 MinIO 实现文件切片和上传的 Spring Boot