01 springboot--マルチデータソース
4520 ワード
親測は有効で、好きな古い鉄は666をダブルクリックします
プロファイル
プロファイル
DynamicDataSourceConfig.java
/**
* spring , ,
*/
@Configuration
public class DynamicDataSourceConfig {
@Bean(name = "test")
@ConfigurationProperties("spring.datasource.druid.first")
public DataSource firstDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "ye")
@ConfigurationProperties("spring.datasource.druid.second")
public DataSource secondDataSource() {
return DruidDataSourceBuilder.create().build();
}
// 。 。
@Primary
@Bean
public DynamicDataSource dataSource() {
Map targetDataSources = new HashMap();
targetDataSources.put(DataSourceNames.FIRST, firstDataSource());
targetDataSources.put(DataSourceNames.SECOND, secondDataSource());
return new DynamicDataSource(firstDataSource(), targetDataSources);
}
}
2つのデータ・ソースの構成を次に示します。
データソースプロファイル2:TestMybatisConfig.java
/**
* @MapperScan
* @Qualifier
*/
@Configuration
@MapperScan(basePackages = {"com.javademos.train.dynamicdatasource.test.mapper"}, sqlSessionFactoryRef = "sqlSessionFactory1",sqlSessionTemplateRef = "sqlSessionTemplate1")
public class TestMybatisConfig {
@Autowired
@Qualifier("test")
private DataSource test;
@Bean(name = "sqlSessionFactory1")
@Primary
public SqlSessionFactory sqlSessionFactory1() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(test); // titan , titan
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
// , xml mybatis sql 。
return factoryBean.getObject();
}
@Bean(name = "sqlSessionTemplate1")
@Primary
public SqlSessionTemplate sqlSessionTemplate1(@Qualifier("sqlSessionFactory1") SqlSessionFactory sqlSessionFactory) throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory); // Factory
return template;
}
/**
*
* @param
* @return
*/
@Bean(name = "test1TransactionManager")
@Primary
public PlatformTransactionManager testTransactionManager() {
return new DataSourceTransactionManager(test);
}
}
データソースプロファイル2:YeMybatisConfig.java
@Configuration
@MapperScan(basePackages = {"com.javademos.train.dynamicdatasource.ye.mapper"}, sqlSessionFactoryRef = "sqlSessionFactory2",sqlSessionTemplateRef = "sqlSessionTemplate2")
public class YeMybatisConfig {
@Autowired
@Qualifier("ye")
private DataSource ye;
@Bean(name = "sqlSessionFactory2")
public SqlSessionFactory sqlSessionFactory2() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(ye); // titan , titan
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
return factoryBean.getObject();
}
@Bean(name = "sqlSessionTemplate2")
public SqlSessionTemplate sqlSessionTemplate2(@Qualifier("sqlSessionFactory2") SqlSessionFactory sqlSessionFactory) throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory); // Factory
return template;
}
/**
*
* @param
* @return
*/
@Bean(name = "test2TransactionManager")
public PlatformTransactionManager testTransactionManager() {
return new DataSourceTransactionManager(ye);
}
}
データソースymlファイル
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
druid:
first:
url: jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
username: root
password:
second:
url: jdbc:mysql://localhost:3306/ye?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
username: root
password:
コードクラウド:https://gitee.com/yedasheng/dynamicdatasource
/**
* spring , ,
*/
@Configuration
public class DynamicDataSourceConfig {
@Bean(name = "test")
@ConfigurationProperties("spring.datasource.druid.first")
public DataSource firstDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "ye")
@ConfigurationProperties("spring.datasource.druid.second")
public DataSource secondDataSource() {
return DruidDataSourceBuilder.create().build();
}
// 。 。
@Primary
@Bean
public DynamicDataSource dataSource() {
Map targetDataSources = new HashMap();
targetDataSources.put(DataSourceNames.FIRST, firstDataSource());
targetDataSources.put(DataSourceNames.SECOND, secondDataSource());
return new DynamicDataSource(firstDataSource(), targetDataSources);
}
}
/**
* @MapperScan
* @Qualifier
*/
@Configuration
@MapperScan(basePackages = {"com.javademos.train.dynamicdatasource.test.mapper"}, sqlSessionFactoryRef = "sqlSessionFactory1",sqlSessionTemplateRef = "sqlSessionTemplate1")
public class TestMybatisConfig {
@Autowired
@Qualifier("test")
private DataSource test;
@Bean(name = "sqlSessionFactory1")
@Primary
public SqlSessionFactory sqlSessionFactory1() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(test); // titan , titan
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
// , xml mybatis sql 。
return factoryBean.getObject();
}
@Bean(name = "sqlSessionTemplate1")
@Primary
public SqlSessionTemplate sqlSessionTemplate1(@Qualifier("sqlSessionFactory1") SqlSessionFactory sqlSessionFactory) throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory); // Factory
return template;
}
/**
*
* @param
* @return
*/
@Bean(name = "test1TransactionManager")
@Primary
public PlatformTransactionManager testTransactionManager() {
return new DataSourceTransactionManager(test);
}
}
@Configuration
@MapperScan(basePackages = {"com.javademos.train.dynamicdatasource.ye.mapper"}, sqlSessionFactoryRef = "sqlSessionFactory2",sqlSessionTemplateRef = "sqlSessionTemplate2")
public class YeMybatisConfig {
@Autowired
@Qualifier("ye")
private DataSource ye;
@Bean(name = "sqlSessionFactory2")
public SqlSessionFactory sqlSessionFactory2() throws Exception {
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(ye); // titan , titan
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
return factoryBean.getObject();
}
@Bean(name = "sqlSessionTemplate2")
public SqlSessionTemplate sqlSessionTemplate2(@Qualifier("sqlSessionFactory2") SqlSessionFactory sqlSessionFactory) throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactory); // Factory
return template;
}
/**
*
* @param
* @return
*/
@Bean(name = "test2TransactionManager")
public PlatformTransactionManager testTransactionManager() {
return new DataSourceTransactionManager(ye);
}
}
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
druid:
first:
url: jdbc:mysql://localhost:3306/test?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
username: root
password:
second:
url: jdbc:mysql://localhost:3306/ye?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8
username: root
password: