亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

如何使用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
土默特左旗| 睢宁县| 鹤山市| 大名县| 千阳县| 泉州市| 广州市| 鹤庆县| 共和县| 平乡县| 林芝县| 湟中县| 黔江区| 天门市| 乌审旗| 陈巴尔虎旗| 外汇| 曲松县| 岗巴县| 伊春市| 景泰县| 临西县| 桓台县| 通道| 潢川县| 五台县| 昌宁县| 额尔古纳市| 思茅市| 永清县| 黄浦区| 读书| 宜良县| 镇沅| 德令哈市| 泰顺县| 沙洋县| 郧西县| 菏泽市| 夏津县| 通城县|