SpringBoot默认支持单个DataSource,现在很多项目也不再采用单个数据库进行操作,所以学会配置多个DataSource是很有必要的
1.在启动类@SpringBootApplication中设置排除掉DataSourceAutoConfiguration.class,因为springboot项目会自动加载,代码如下
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class CollegeApplication {
public static void main(String[] args) {
SpringApplication.run(CollegeApplication.class, args);
}
}
2.配置yml文件,我拿其中的一个举例datasource-college
server:
port: 8081
spring:
datasource-college:
url: jdbc:mysql://127.0.0.1:3306/college?characterEncoding=utf-8
type: com.alibaba.druid.pool.DruidDataSource
username: root
password: root
datasource-blogs:
url: jdbc:mysql://127.0.0.1:3306/blogs?characterEncoding=utf-8
type: com.alibaba.druid.pool.DruidDataSource
username: root
password: root
3.DataSource配置类,配置一个DataSource就重新创建一个配置类
(可以直接cv,注意改路径名,还有name属性,防止name一致)
@Configuration
//basePackages 指定dao包 sqlSessionFactoryRef 要和SqlSessionFactory定义的Bean名称一样
@MapperScan(basePackages = { "org.dingxf.dao1" }, sqlSessionFactoryRef = "collegeSqlSessionFactory")
public class SqlSessionFactoryCollegeConfig {
//mapper扫描xml文件的路径
static final String MAPPER_LOCATION = "org/dingxf/mapper1/*.xml";
/**
* 配置数据源
*/
@Bean(name = "dataSourceCollege")
//prefix的值要和yml文件中的一致
@ConfigurationProperties(prefix = "spring.datasource-college")
public DataSource dataSourceCollege(){
return DataSourceBuilder.create().build();
}
/**
* 配置SqlSessionFactory
*/
@Bean(name = "collegeSqlSessionFactory")
public SqlSessionFactory collegeSqlSessionFactory(@Qualifier("dataSourceCollege") DataSource dataSource) throws Exception{
//final SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
//用这个MybatisSqlSessionFactoryBean是因为我用的是mybatis普拉斯 用上面的会报错
final MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
//这里注意getResources()方法,一定要加s因为有一个方法是getResource()
sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MAPPER_LOCATION));
return sqlSessionFactoryBean.getObject();
}
}
这样就配置完成了!
测试结果