1. 程式人生 > 程式設計 >SpringBoot快速配置資料來源的方法

SpringBoot快速配置資料來源的方法

SpringBoot如何快速配置資料來源;有如下兩種方式:

  1. 通過spring-boot-starter-jdbc快速配置資料來源
  2. 自定義資料來源DataSource

首先我們需要明確資料來源DataSource有什麼作用:

  1. 通過DataSource可以獲取資料庫連線Connection
  2. 通過DataSource建立JdbcTemplate操作資料庫

實際專案中,我們在配置資料來源的時候會指定資料庫連線池,比如流行的Hikari(spring預設的資料庫連線池)、C3p0、Dbcp2以及阿里巴巴的Druid。

一、使用資料庫連線池

應用在操作資料庫的時候,直接從資料庫連線池獲取連線,而不需要每次建立新的連線。

至於資料庫連線池的好處,總結就是: 應用建立和銷燬連線的代價是很大的,使用資料庫連線池可以很好的複用連線,節省開銷,方便管理,簡化開發。

可能有些場景我們不想使用SpringBoot JDBC預設的資料來源,我需要引入資料庫連線池,然後自定義資料來源,指定資料來源型別。

下面以Dbcp2資料庫連線池配置資料來源為例。

二、配置依賴

引入dbcp2的資料庫連線池已經相關依賴。

<!-- 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(){
    return DataSourceBuilder.create().type(BasicDataSource.class).build();
  }
}

這邊我們可以看到我們建立的DataSource型別為BasicDataSource型別的。並且BasicDataSource來源於之前配置的dbcp2依賴的jar包中。

五、呼叫驗證

下面我們使用junit來驗證以下資料來源配置的正確與否:

@SpringBootTest
@RunWith(SpringRunner.class)
public class JdbcCustomizeDatasourceApplicationTests {
 
  @Autowired
  @Qualifier("myDbcp2DataSource")
  private DataSource dataSource;
 
  @Test
  public void springJdbcTemplateTest(){
    try{
      JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
      String queryStr = "select * from student";
      List<Student> resultList = new ArrayList<>();
      jdbcTemplate.query(queryStr,(ResultSet resultSet)->{
        Student student = new Student();
        student.setId(resultSet.getString("id"));
        student.setStudentId(resultSet.getString("student_id"));
        student.setStudentName(resultSet.getString("student_name"));
        student.setAge(resultSet.getInt("age"));
        resultList.add(student);
      });
      resultList.forEach((Student student) -> System.out.println(student));
    }catch (Exception exception){
      exception.printStackTrace();
    }
  }
}

以上就是SpringBoot快速配置資料來源的方法的詳細內容,更多關於SpringBoot 配置資料來源的資料請關注我們其它相關文章!