SpringBoot集成Druid連接池連接MySQL8.0.11

這篇博客簡單介紹spring boot集成druid連接池的簡單配置和註意事項
本次使用的是MySQL8.0.11版本
前提:一個已經搭建好的Spring Boot項目和可以使用的數據庫
註意:MySQL8.0.X的配置和5.7.X有小差異,整體思路完全一樣

1.配置依賴

依賴管理我們可以使用maven或者gradle
MySQL Connector/J版本選擇:

這裡寫圖片描述

註意:如果是MySQL5.X系列的話,使用8.0.X的驅動會有兼容性問題出現,請留意!

1.1MySQL Connector/J依賴配置 maven

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.11</version>
</dependency>

gradle

// https://mvnrepository.com/artifact/mysql/mysql-connector-java
compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.11'

1.2Druid依賴配置

 maven

<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>

####gradle

// https://mvnrepository.com/artifact/com.alibaba/druid
compile group: 'com.alibaba', name: 'druid', version: '1.1.10'

2.配置DataSource

這裡我們使用Java Config。我在使用YAML配置的時候,發現代碼提示不完整,這大大增加瞭出錯的可能性,所以推薦使用Java Config。

 2.1創建配置類

@Configuration
public class Config {
    @Bean
    public DruidDataSource druidDataSource() {
        //Druid 數據源配置
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/work?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true");
        dataSource.setUsername("webuser");
        dataSource.setPassword("123456");
        //初始連接數(默認值0)
        dataSource.setInitialSize(8);
        //最小連接數(默認值0)
        dataSource.setMinIdle(8);
        //最大連接數(默認值8,註意"maxIdle"這個屬性已經棄用)
        dataSource.setMaxActive(32);
        return dataSource;
    }
}

2.2註意事項

部分註釋寫在代碼裡面瞭,這裡說兩個註意事項
一個是DriverClassName
8.0.11驅動(應該是8版本開始),棄用瞭原來的方法,我們直接去看源碼也能找到。
com.mysql.jdbc.Driver裡面有兩句話

Loading class `com.mysql.jdbc.Driver’. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver’
The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

意思是加載類“com.mysql.jdbc.Driver”。 這已被棄用。 新的驅動程序類是`com.mysql.cj.jdbc.Driver’ 所以註意一個屬性的設置“setDriverClassName” 另一個註意事項是URL的設置,有4個參數需要註意一下

  • characterEncoding=utf8 (字符編碼)
  • useSSL=false (發現是8版本開始才需要添加,5.X印象中不需要,添加這個參數可能和MySQL的SSL連接設置有關系)
  • serverTimezone=UTC (當連接數據庫時候,出現Time Zone錯誤時添加此參數,我貌似是使用Druid連接池時才出現的這個問題)
  • allowPublicKeyRetrieval=true (使用root賬戶登陸沒問題,使用普通賬戶會提示Public Key Retrieval錯誤)

更多配置,請參考Druid項目中的wiki,根據需求進行配置

這裡寫圖片描述

到此這篇關於SpringBoot集成Druid連接池連接MySQL8.0.11的文章就介紹到這瞭,更多相關SpringBoot集成Druid連接池內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: