spring boot druid mybatis 多数据源 配置
2017-09-03 07:52
986 查看
spring boot 在配置时做了很多简化配置的设置,但是简化的配置往往已牺牲一定的定制化,比如在数据源的配置时,spring boot 只提供4种数据库连接池的配置,其中并不支持常用的druid
阅读spring boot DataSourceBuilder 的源码可以发现 spring boot 提供的4种数据源类型并不是我们想要的
但是 DataSourceBuilder 提供了type方法来自定义DataSource类型
知道了方法,下面配置就简单许多了
首先是application.properties 文件的配置
然后是具体的主数据源配置类
_ @ConfigurationProperties(prefix = "spring.datasource.sso") 引入配置项_
使用如下方式来创建DruidDataSource,简化配置
第二数据源
数据源配置完毕
每个数据源都会生成自己的sqlSession,相互独立
阅读spring boot DataSourceBuilder 的源码可以发现 spring boot 提供的4种数据源类型并不是我们想要的
private static final String[] DATA_SOURCE_TYPE_NAMES = new String[] { "org.apache.tomcat.jdbc.pool.DataSource", "com.zaxxer.hikari.HikariDataSource", "org.apache.commons.dbcp.BasicDataSource", // deprecated "org.apache.commons.dbcp2.BasicDataSource" };
但是 DataSourceBuilder 提供了type方法来自定义DataSource类型
public DataSourceBuilder type(Class<? extends DataSource> type) { this.type = type; return this; }
知道了方法,下面配置就简单许多了
首先是application.properties 文件的配置
spring.datasource.sso.url=jdbc:mysql://localhost:3306/sso?useSSL=false spring.datasource.sso.username=root spring.datasource.sso.password=root spring.datasource.sso.driver-class-name=com.mysql.jdbc.Driver spring.datasource.sso.max-idle=5 spring.datasource.sso.max-wait=10000 spring.datasource.sso.min-idle=1 spring.datasource.sso.initial-size=1 spring.datasource.sso.validation-query=SELECT 1 spring.datasource.sso.test-on-borrow=false spring.datasource.sso.test-while-idle=true spring.datasource.sso.time-between-eviction-runs-millis=18800 spring.datasource.message.url=jdbc:mysql://localhost:3306/message?useSSL=false spring.datasource.message.username=root spring.datasource.message.password=root spring.datasource.message.driver-class-name=com.mysql.jdbc.Driver spring.datasource.message.max-idle=5 spring.datasource.message.max-wait=10000 spring.datasource.message.min-idle=1 spring.datasource.message.initial-size=1 spring.datasource.message.validation-query=SELECT 1 spring.datasource.message.test-on-borrow=false spring.datasource.message.test-while-idle=true spring.datasource.message.time-between-eviction-runs-millis=18800
然后是具体的主数据源配置类
@Configuration @MapperScan(basePackages = {"org.vergil.demo.core.dao.mapper.sso"}, sqlSessionFactoryRef = "ssoSqlSessionFactory") public class SsoConfig { @Bean(name = "ssoDataSource") @ConfigurationProperties(prefix = "spring.datasource.sso") @Primary public DataSource ssoDataSource() { //指定使用DruidDataSource return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build(); } @Bean(name = "ssoSqlSessionFactory") @Primary public SqlSessionFactory testSqlSessionFactory(@Qualifier("ssoDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); // bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/sso/*.xml")); return bean.getObject(); } @Primary @Bean(name = "ssoTransactionManager") public DataSourceTransactionManager testTransactionManager(@Qualifier("ssoDataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Primary @Bean(name = "ssoSqlSessionTemplate") public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("ssoSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); }
_ @ConfigurationProperties(prefix = "spring.datasource.sso") 引入配置项_
使用如下方式来创建DruidDataSource,简化配置
return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build();
第二数据源
@Configuration
@MapperScan(basePackages = {"org.vergil.demo.core.dao.mapper.message"}, sqlSessionFactoryRef = "messageSqlSessionFactory")
public class MessageConfig {
@Bean(name = "messageDataSource")
@ConfigurationProperties(prefix = "spring.datasource.message")
public DataSource messageDataSource() {
return DataSourceBuilder.create().type(com.alibaba.druid.pool.DruidDataSource.class).build();}
@Bean(name = "messageSqlSessionFactory")
public SqlSessionFactory testSqlSessionFactory(@Qualifier("messageDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
// bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/message/*.xml"));
return bean.getObject();
}
@Bean(name = "messageTransactionManager")
public DataSourceTransactionManager testTransactionManager(@Qualifier("messageDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "messageSqlSessionTemplate")
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("messageSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
数据源配置完毕
每个数据源都会生成自己的sqlSession,相互独立
相关文章推荐
- spring-boot | 使员Druid 整合Mybatis 最简配置多数据源
- spring boot + mybatis + druid 配置双数据源
- spring boot druid mybatis 多数据源 配置
- Spring Boot : 集成mybatis、pagehelper插件、开启事务、druid数据源配置、mybatis-generator(十一)
- SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)
- spring boot 配置MyBatis,支持多个数据源和分页插件
- Spring Boot + Mybatis多数据源和动态数据源配置
- 记录SpringBoot使用Druid和Mybatis配置
- springboot+mybatis配置多数据源
- 数据源--Springboot配置使用Druid数据源
- SpringBoot+Druid+Mybatis配置多数据源
- Springboot+Mybatis+Pagehelper+Aop动态配置Oracle、Mysql数据源
- SpringBoot多数据源及MyBatis配置详解
- springboot + mybatis配置多数据源示例
- Spring Boot+Mybatis+Druid+PageHelper实现多数据源并分页的方法
- Spring Boot 整合 Mybatis 实现 Druid 多数据源详解
- Spring Boot 整合 Mybatis 实现 Druid 多数据源详解
- springboot+mybatis手动配置数据源
- SpringBoot使用Druid数据源的配置方法
- springboot mybatis druid配置