【springboot】配置数据源datasource
数据源datasource
- 可以获取数据库连接Connection
- 可以创建JdbcTemplate操作数据库
默认配置
- spring 默认的数据库连接池为Hikari,
- maven依赖如下
<!--spring-boot-starter-jdbc自动配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>2.2.2.RELEASE</version>
</dependency>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
-在application.properties文件中配置数据库连接属性,
这里使用的是springboot starter机制自动配置好数据源,所以能使用最少量的属性实现自动配置
spring-boot-starter-jdbc由spring-boot-starter(自动配置,自动扫描)、spring-jdbc(提供spring管理数据库的标准接口)和HikariCP(Spring默认的数据库连接池)组成
spring.datasource.url=jdbc:mysql://localhost:3306/blue?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=wan4380797
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
自定义datasourc
有些场景我们不想使用SpringBoot JDBC默认的数据源,我需要引入数据库连接池,然后自定义数据源,指定数据源类型
以Dbcp2数据库连接池配置数据源为例:
- maven依赖如下
<!-- dbcp2数据库连接池 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.7.0</version>
</dependency>
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.18</version>
</dependency>
<!-- 提供操作数据库的标准口径 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.2.RELEASE</version>
<scope>compile</scope>
</dependency>
- application.properties文件中配置数据库连接属性。
customize.datasource.url=jdbc:mysql://localhost:3306/blue?serverTimezone=UTC
customize.datasource.username=root
customize.datasource.password=wan4380797
customize.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
- 自定义datasource
import org.apache.commons.dbcp2.BasicDataSource;
@Configuration
public class Dbcp2DataSource {
@Bean("myDbcp2DataSource")
@ConfigurationProperties(prefix = "customize.datasource")
public DataSource getDataSource(){
// BasicDataSource来源于配置的dbcp2依赖的jar包
return DataSourceBuilder.create().type(BasicDataSource.class).build();
}
}
- 在别处引用时需要使用自动注入
@Autowired
@Qualifier("myDbcp2DataSource")
private DataSource dataSource;
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);