【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);

posted @ 2023-02-22 11:10  xiaoyu_jane  阅读(2203)  评论(0编辑  收藏  举报