multi datasource and master slate datasource start
support for multi datasource and master slave datasource for spring boot
添加如下配置到classpath下的application.properties文件中
一:多数据配置
multidatasource.groups.ds.dbType=MYSQL
multidatasource.groups.ds.datasources[0].rwType=W
multidatasource.groups.ds.datasources[0].driverClassName=com.mysql.jdbc.Driver
multidatasource.groups.ds.datasources[0].url=jdbc//localhost:3306/ds_0
multidatasource.groups.ds.datasources[0].username=root
multidatasource.groups.ds.datasources[0].password=123456
multidatasource.groups.ds.datasources[0].initialSize=1
multidatasource.groups.ds.datasources[0].minIdle=1
multidatasource.groups.ds.datasources[0].maxActive=20
multidatasource.groups.ds.datasources[0].maxWait=60000
multidatasource.groups.ds.datasources[0].timeBetweenEvictionRunsMillis=1000
multidatasource.groups.ds.datasources[0].minEvictableIdleTimeMillis=1000
multidatasource.groups.ds.datasources[0].maxPoolPreparedStatementPerConnectionSize=30
multidatasource.groups.ds.dbType=MYSQL
multidatasource.groups.otherds.datasources[0].rwType=W
multidatasource.groups.otherds.datasources[0].driverClassName=com.mysql.jdbc.Driver
multidatasource.groups.otherds.datasources[0].url=jdbc//localhost:3306/ds_1
multidatasource.groups.otherds.datasources[0].username=root
multidatasource.groups.otherds.datasources[0].password=123456
multidatasource.groups.otherds.datasources[0].initialSize=1
multidatasource.groups.otherds.datasources[0].minIdle=1
multidatasource.groups.otherds.datasources[0].maxActive=20
multidatasource.groups.otherds.datasources[0].maxWait=60000
multidatasource.groups.otherds.datasources[0].timeBetweenEvictionRunsMillis=1000
multidatasource.groups.otherds.datasources[0].minEvictableIdleTimeMillis=1000
multidatasource.groups.otherds.datasources[0].maxPoolPreparedStatementPerConnectionSize=30
以上配置会生成两个数据源service:
名称为DataSource-ds的WrapperDataSource的Bean
名称为DataSource-otherds的WrapperDataSource的Bean
以及数据库事务service:
名称为TransactionManager-ds的DataSourceTransactionManager的Bean
名称为TransactionManager-otherds的DataSourceTransactionManager的Bean
二:master/slave数据源配置
multidatasource.groups.ds.dbType=MYSQL
multidatasource.groups.ds.datasources[0].rwType=W
multidatasource.groups.ds.datasources[0].driverClassName=com.mysql.jdbc.Driver
multidatasource.groups.ds.datasources[0].url=jdbc//localhost:3306/ds_0
multidatasource.groups.ds.datasources[0].username=root
multidatasource.groups.ds.datasources[0].password=123456
multidatasource.groups.ds.datasources[0].initialSize=1
multidatasource.groups.ds.datasources[0].minIdle=1
multidatasource.groups.ds.datasources[0].maxActive=20
multidatasource.groups.ds.datasources[0].maxWait=60000
multidatasource.groups.ds.datasources[0].timeBetweenEvictionRunsMillis=1000
multidatasource.groups.ds.datasources[0].minEvictableIdleTimeMillis=1000
multidatasource.groups.ds.datasources[0].maxPoolPreparedStatementPerConnectionSize=30
multidatasource.groups.ds.datasources[1].rwType=R
multidatasource.groups.ds.datasources[1].driverClassName=com.mysql.jdbc.Driver
multidatasource.groups.ds.datasources[1].url=jdbc//localhost:3306/ds_0
multidatasource.groups.ds.datasources[1].username=root
multidatasource.groups.ds.datasources[1].password=123456
multidatasource.groups.ds.datasources[1].initialSize=1
multidatasource.groups.ds.datasources[1].minIdle=1
multidatasource.groups.ds.datasources[1].maxActive=20
multidatasource.groups.ds.datasources[1].maxWait=60000
multidatasource.groups.ds.datasources[1].timeBetweenEvictionRunsMillis=1000
multidatasource.groups.ds.datasources[1].minEvictableIdleTimeMillis=1000
multidatasource.groups.ds.datasources[1].maxPoolPreparedStatementPerConnectionSize=30
以上数据源可以实现读写分离,sql语句为select的查询默认走备库,其他走主库
multidatasource.groups.ds.datasources[0].rwType=W —为主库,只能配置一个主库
multidatasource.groups.ds.datasources[1].rwType=R —备库,可以配置多个
参照以上配置,框架会自动注册以下数据源的service:
名称为DataSource-ds的MasterSlaveDataSource的Bean
名称为DataSource-ds-MASTER的DruidDataSource的Bean
名称为DataSource-ds-SLAVE-1的DruidDataSource的Bean
以及数据库事务service:
名称为TransactionManager-ds的DataSourceTransactionManager的Bean