spring boot项目多数据源处理
spring boot项目多数据源处理
基于《spring boot集成mybatis》,增加一套数据源配置信息,多数据源配置的实质就是让不同的MybatisConfig作用于对应的mapper目录,获取不同的数据库连接信息:
1、yml文件中增加了数据库连接信息
2、增加了一个MybatisBConfig,用来处理另一个数据源:
@Configuration
@EnableConfigurationProperties(BaseDataSourceConfig.class)
@MapperScan(basePackages = {"com.wj.spc.demo_1203.dao.bMapper"}, sqlSessionTemplateRef = "bSqlSessionTemplate")
public class MybatisBConfig {
@Autowired
private BaseDataSourceConfig baseDataSourceConfig;
@Value("${spring.datasource.secondary.url}")
private String jdbcUrl;
@Value("${spring.datasource.secondary.password}")
private String password;
@Value("${spring.datasource.secondary.username}")
private String username;
@Bean(name = "bDataSource")
public DataSource dataSource() {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(jdbcUrl);
config.setUsername(username);
config.setPassword(password);
config.setReadOnly(baseDataSourceConfig.isReadOnly());
config.setConnectionTimeout(baseDataSourceConfig.getConnectionTimeout());
config.setIdleTimeout(baseDataSourceConfig.getIdleTimeout());
config.setMaxLifetime(baseDataSourceConfig.getMaxLifetime());
config.setMaximumPoolSize(baseDataSourceConfig.getMaximumPoolSize());
config.setMinimumIdle(baseDataSourceConfig.getMinimumIdle());
config.setAutoCommit(baseDataSourceConfig.isAutoCommit());
config.setConnectionTestQuery(baseDataSourceConfig.getConnectionTestQuery());
return new HikariDataSource(config);
}
@Bean(name = "bSqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("bDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/bMappers/*.xml"));
return sessionFactory.getObject();
}
@Bean(name = "bSqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("bSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
3、增加一个对应的DataSourceTransactionManager: