Spring Boot进阶之DataSource

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>

   配置单数据源时只需替换数据源的创建即可

 

扫描二维码关注公众号,回复: 232199 查看本文章
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

 

猜你喜欢

转载自theseus.iteye.com/blog/2391841