主题:spring boot 动态切换数据源

faith 2019年06月29日 60

有大神有spring boot 动态切换源的demo以及示例嘛???在线等

zllkyo 2019年06月29日

这是springmvc切换数据源

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;


/**

 * 动态数据源(数据源切换)

 * Created by ZhangShuzheng on 2017/1/15.

 */

public class DynamicDataSource extends AbstractRoutingDataSource {


    private final static Logger LOGGER = LoggerFactory.getLogger(DynamicDataSource.class);


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


    @Override

    protected Object determineCurrentLookupKey() {

        String dataSource = getDataSource();

        LOGGER.info("当前操作使用的数据源:{}", dataSource);

        return dataSource;

    }


    /**

     * 设置数据源

     *

     * @param dataSource

     */

    public static void setDataSource(String dataSource) {

        CONTEXT_HOLDER.set(dataSource);

    }


    /**

     * 获取数据源

     *

     * @return

     */

    public static String getDataSource() {

        String dataSource = CONTEXT_HOLDER.get();

        // 如果没有指定数据源,使用默认数据源

        if (null == dataSource) {

            DynamicDataSource.setDataSource(DataSourceEnum.MASTER.getDefault());

        }

        return CONTEXT_HOLDER.get();

    }


    /**

     * 清除数据源

     */

    public static void clearDataSource() {

        CONTEXT_HOLDER.remove();

    }


}