1、数据源配置
在Spring Boot中默认配置了Tomcat, HikariCP、Commons DBCP三种数据源类型,如果在classpath中都能找到的话,则Tomcat优先加载(顺序加载)
配置方式
@Bean(name="dataSource", initMethod="init", destroyMethod="close")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
默认使用spring.datasource前缀的属性,也可以自定义属性,通过@Value读取
spring.datasource.url=jdbc:mysql://localhost:3306/db1
spring.datasource.username=root
spring.datasource.password=123456
2、使用阿里开源的druid数据源配置
引入pom依赖,引入后配置文件中自动提示druid配置属性
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.2</version> </dependency>
配置单数据源时只需替换数据源的创建即可
return DruidDataSourceBuilder.create().build();
基于druid的多数据源配置
@Bean(name="dataSource", initMethod="init", destroyMethod="close")//别名指定
@Primary //指定为主数据源
@ConfigurationProperties("spring.datasource.druid") //指定配置文件中的属性引用
public DataSource dataSource() {
return DruidDataSourceBuilder.create().build();
}
/***配置其他数据源***/
@Bean(name="otherDataSource", initMethod="init", destroyMethod="close")
@ConfigurationProperties("other.datasource.druid") //指定配置文件中的属性引用
public DataSource otherDataSource() {
return DruidDataSourceBuilder.create().build();
}
定义配置文件
spring.datasource.druid.url=jdbc:mysql://localhost:3306/db1
spring.datasource.druid.username=root
spring.datasource.druid.password=123456
spring.datasource.druid.filters=stat,wall,slf4j //druid监控配置
#自定义数据源属性配置,druid-spring-boot-starter已引入druid的配置提示,根据提示只需重新定义
#属性前缀即可,实现不同数据源的个性化配置
other.datasource.druid.type=com.alibaba.druid.pool.DruidDataSource
other.datasource.druid.url=jdbc:mysql://localhost:3306/db2
other.datasource.druid.username=root
other.datasource.druid.password=123456
other.datasource.druid.filters=stat,wall,slf4j
数据源在jdbctemple中的注入,通过@Qualifier注解区分数据源的使用
@Bean
public JdbcTemplate jdbcTemplate(@Qualifier("dataSource")DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean("otherJdbcTemplate")
public JdbcTemplate otherJdbcTemplate(@Qualifier("otherDataSource")DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
控制台查看数据源初始化信息,可以看到两个都已初始化
--- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
--- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-2} inited
druid监控台查看
http://localhost:8765/druid/datasource.html
数据源1,Basic Info For DataSource-1920147706
数据源2,Basic Info For DataSource-2034046523