SpringBoot之集成Druid
导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
配置Druid
首先创建/resources/application.yaml
:
spring:
datasource:
name: xxx
password: xxx
url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/demo?&useUnicode=True&characterEncoding=UTF-8
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
# ---druid
initialSize: 5 # 初始化数量
maxActive: 20 # 最大活动连接数
minIdle: 1 # 最小空闲数量
maxWait: 6000 # 最大等待时间
然后写一个自定义的Configure
类,用来创建我们的数据源:
package com.baiyang.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class Configure {
@Bean
//指定从配置中加载"spring.datasource"开头的配置,因为我们的Druid的配置是写在这个前缀下面的。
@ConfigurationProperties(prefix = "spring.datasource")
//指定条件:必须配置了spring.datasource.type属性,并且属性的值必须是"com.alibaba.druid.pool.DruidDataSource"才加载DruidDataSource。
@ConditionalOnProperty(prefix = "spring.datasource", name = "type", havingValue = "com.alibaba.druid.pool.DruidDataSource")
public DataSource getDataSource() {
return new DruidDataSource();
}
}
测试
package com.baiyang.springboot;
import com.alibaba.druid.pool.DruidDataSource;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.sql.DataSource;
@SpringBootTest
class SpringbootTestApplicationTests {
@Autowired
private DataSource dataSource;
/**
* 打印数据源信息
*/
@Test
public void printDataSource() {
String str = String.format("\033[1;33mDataSource info: type=%s", dataSource.getClass().getSimpleName());
if (dataSource instanceof DruidDataSource) {
DruidDataSource druidDataSource = (DruidDataSource) dataSource;
str = String.format("%s,initialSize=%s,maxActive=%s,maxIdle=%s", str, druidDataSource.getInitialSize(), druidDataSource.getMaxActive(), druidDataSource.getMaxIdle());
}
System.out.printf("%s\033[0m\n", str);
}
}