欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring Boot进阶之DataSource

程序员文章站 2022-03-22 15:30:45
...

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