单数据源
使用h2数据库,springboot默认配置数据源信息。可以直接在调用对象中使用@Autowired注解注入Datasource对象或JdbcTemplate对象。
多数据源
可以使用排除springboot的自动配置功能,自己进行相应的配置:
- 在启动类上排除相应的自动配置项:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
JdbcTemplateAutoConfiguration.class})
public class DemoApplication{
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
- 在Configuration配置类中配置相应的bean。
@Configuration
public class DataSourceConfig {
private Logger log = LoggerFactory.getLogger(this.getClass());
@Bean
@ConfigurationProperties("foo.datasource")
public DataSourceProperties fooDataSourceProperties(){
return new DataSourceProperties();
}
@Bean
public DataSource fooDataSource(){
DataSourceProperties dataSourceProperties = fooDataSourceProperties();
log.info("foo datasource : {}", dataSourceProperties.getUrl());
return dataSourceProperties.initializeDataSourceBuilder().build();
}
@Bean
public PlatformTransactionManager fooTxManager(){
return new DataSourceTransactionManager(fooDataSource());
}
@Bean
@ConfigurationProperties("bar.datasource")
public DataSourceProperties barDataSourceProperties(){
return new DataSourceProperties();
}
@Bean
public DataSource barDataSource(){
DataSourceProperties dataSourceProperties = barDataSourceProperties();
log.info("bar datasource: {}", dataSourceProperties.getUrl());
return dataSourceProperties.initializeDataSourceBuilder().build();
}
@Bean
public PlatformTransactionManager barTxManager(){
return new DataSourceTransactionManager(barDataSource());
}
}
- 在application.yml中添加两个数据源对应的配置项:
foo:
datasource:
url: jdbc:h2:mem:foo
username: sa
password:
bar:
datasource:
url: jdbc:h2:mem:bar
username: sa
password:
- 在使用datasource的对象中注入datasource对象时,使用@Qualifier注解标识需要注入哪个DataSource对象:
@Autowired
@Qualifier("fooDataSource")
private DataSource dataSource;