91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何使用Spring Boot實現MySQL的讀寫分離

小樊
84
2024-08-07 00:14:21
欄目: 云計算

使用Spring Boot實現MySQL的讀寫分離可以通過配置多個數據源,并在不同的服務中處理讀寫操作。下面是一個簡單的示例:

  1. 配置application.properties文件:
# 主數據源
spring.datasource.master.url=jdbc:mysql://localhost:3306/masterdb
spring.datasource.master.username=root
spring.datasource.master.password=root

# 從數據源
spring.datasource.slave.url=jdbc:mysql://localhost:3306/slavedb
spring.datasource.slave.username=root
spring.datasource.slave.password=root
  1. 創建兩個數據源的配置類:
@Configuration
public class DataSourceConfig {
    
    @Primary
    @Bean(name = "masterDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.master")
    public DataSource masterDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "slaveDataSource")
    @ConfigurationProperties(prefix = "spring.datasource.slave")
    public DataSource slaveDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "routingDataSource")
    public AbstractRoutingDataSource routingDataSource(@Qualifier("masterDataSource") DataSource masterDataSource,
                                                        @Qualifier("slaveDataSource") DataSource slaveDataSource) {
        Map<Object, Object> targetDataSources = new HashMap<>();
        targetDataSources.put("master", masterDataSource);
        targetDataSources.put("slave", slaveDataSource);

        RoutingDataSource routingDataSource = new RoutingDataSource();
        routingDataSource.setTargetDataSources(targetDataSources);
        routingDataSource.setDefaultTargetDataSource(masterDataSource);

        return routingDataSource;
    }
}
  1. 創建一個自定義的RoutingDataSource類:
public class RoutingDataSource extends AbstractRoutingDataSource {

    @Override
    protected Object determineCurrentLookupKey() {
        return DataSourceContextHolder.getDataSource();
    }
}
  1. 創建一個DataSourceContextHolder類用于切換數據源:
public class DataSourceContextHolder {

    private static final ThreadLocal<String> contextHolder = new ThreadLocal<>();

    public static void setDataSource(String dataSource) {
        contextHolder.set(dataSource);
    }

    public static String getDataSource() {
        return contextHolder.get();
    }

    public static void clearDataSource() {
        contextHolder.remove();
    }
}
  1. 在需要切換數據源的地方調用DataSourceContextHolder.setDataSource(“master”)或DataSourceContextHolder.setDataSource(“slave”)來切換數據源。

通過以上步驟,可以實現Spring Boot中的MySQL讀寫分離配置。

0
东宁县| 紫金县| 孟连| 福建省| 遵义县| 宁南县| 荥阳市| 封开县| 全州县| 馆陶县| 贡山| 汤阴县| 和田县| 乐平市| 昌江| 伊金霍洛旗| 虎林市| 武汉市| 晋州市| 衢州市| 淮滨县| 宁陕县| 宜兰县| 高平市| 五常市| 沁源县| 清苑县| 略阳县| 南雄市| 于都县| 岱山县| 澜沧| 阳春市| 邵阳市| 昌乐县| 剑阁县| 新泰市| 裕民县| 恩施市| 阿拉善盟| 开远市|