spring-boot-demo/demo-dynamic-datasource/src/main/java/com/xkcoding/dynamic/datasource/SpringBootDemoDynamicDataso...

43 lines
1.6 KiB
Java

package com.xkcoding.dynamic.datasource;
import com.xkcoding.dynamic.datasource.datasource.DatasourceConfigCache;
import com.xkcoding.dynamic.datasource.datasource.DatasourceConfigContextHolder;
import com.xkcoding.dynamic.datasource.mapper.DatasourceConfigMapper;
import com.xkcoding.dynamic.datasource.model.DatasourceConfig;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.List;
/**
* <p>
* 启动器
* </p>
*
* @author yangkai.shen
* @date Created in 2019-09-04 17:57
*/
@SpringBootApplication
@RequiredArgsConstructor(onConstructor_ = @Autowired)
public class SpringBootDemoDynamicDatasourceApplication implements CommandLineRunner {
private final DatasourceConfigMapper configMapper;
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoDynamicDatasourceApplication.class, args);
}
@Override
public void run(String... args) {
// 设置默认的数据源
DatasourceConfigContextHolder.setDefaultDatasource();
// 查询所有数据库配置列表
List<DatasourceConfig> datasourceConfigs = configMapper.selectAll();
System.out.println("加载其余数据源配置列表: " + datasourceConfigs);
// 将数据库配置加入缓存
datasourceConfigs.forEach(config -> DatasourceConfigCache.INSTANCE.addConfig(config.getId(), config));
}
}