溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot配置Druid數據源

發布時間:2020-08-07 00:04:33 來源:網絡 閱讀:404 作者:沙漏半杯 欄目:編程語言

springboot整合篇


前言


對于數據訪問層,無論是Sql還是NoSql,SpringBoot默認采用整合SpringData的方式進行統一管理,添加大量的自動配置,屏蔽了很多設置。引入了各種XxxTemplate和XxxRepository來簡化我們隊數據訪問層的操作。


springboot2.0默認是用com.zaxxer.hikari.HikariDataSource作為數據源。


2.0以下默認采用的是org.apache.tomcat.jdbc.pool.DataSource作為數據源。


Hikari的官方網站:http://brettwooldridge.github.io/HikariCP/


Hikari號稱JAVA領域中最快的數據連接池,你可去點連接進去看看,第一行就是說他自己多么厲害,秒殺什么什么的,不過再快我也覺得沒有阿里巴巴奉獻給apache的Druid好,因為阿里巴巴的服務周到,里面有監控中心,可以幫助我們快速定位慢sql等。


Druid官方網站:http://druid.io/


為什么HikariCP被號稱為性能最好的Java數據庫連接池,如何配置使用參考這篇博客:點擊


注意事項:默認情況下使用com.zaxxer.hikari.HikariDataSource獲取數據源時會拋出一個異常。說時區不對,需要我們修改mysql的時區:


SHOW VARIABLES LIKE '%time_zone%'

SET GLOBAL time_zone="+8:00"

使用Druid數據源


Apache Druid(Incubating) - 面向列的分布式數據存儲,非常適合為交互式應用程序提供動力


雖然HikariDataSource性能非常高,但是阿里的druid數據源配有成套的數據源管理軟件,開發中使用的更多。


以往我們都是直接引入Druid的依賴:


<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>druid</artifactId>

    <version>1.1.12</version>

</dependency>

但是面對這么火爆的springboot并沒有直接對Druid的啟動器而是需要我們自己整合,apache中4個月前已經出了一套完美支持springboot的方案所以說我們不使用上面的依賴而是使用:


×××:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter


<dependency>

   <groupId>com.alibaba</groupId>

   <artifactId>druid-spring-boot-starter</artifactId>

   <version>1.1.10</version>

</dependency>

配置YML文件,具體的參數配置可以去官網看看:


spring:

  datasource:

#   數據源基本配置

    username: root

    password: root

    driver-class-name: com.mysql.jdbc.Driver

    url: jdbc:mysql://localhost:3306/duid

    type: com.alibaba.druid.pool.DruidDataSource

#   數據源其他配置

    initialSize: 5

    minIdle: 5

    maxActive: 20

    maxWait: 60000

    timeBetweenEvictionRunsMillis: 60000

    minEvictableIdleTimeMillis: 300000

    validationQuery: SELECT 1 FROM DUAL

    testWhileIdle: true

    testOnBorrow: false

    testOnReturn: false

    poolPreparedStatements: true

#   配置監控統計攔截的filters,去掉后監控界面sql無法統計,'wall'用于防火墻  

    filters: stat,wall

    maxPoolPreparedStatementPerConnectionSize: 20

    useGlobalDataSourceStat: true  

    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

雖然我們配置了druid連接池的其它屬性,但是不會生效。因為默認是使用的java.sql.Datasource的類來獲取屬性的,有些屬性datasource沒有。如果我們想讓配置生效,需要手動創建Druid的配置文件。


@ConfigurationProperties(prefix = "spring.datasource")

@Bean

public DruidDataSource druidDataSource(){

      return new DruidDataSource();

}

Druid的最強大之處在于它有著強大的監控,可以監控我們發送到數據庫的所有sql語句。方便我們后期排插錯誤。


我們接著在DruidDataSource里面配置監控中心:


 /**

     * 配置監控服務器

     * @return 返回監控注冊的servlet對象

     * @author SimpleWu

     */

    @Bean

    public ServletRegistrationBean statViewServlet() {

        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");

        // 添加IP白名單

        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");

        // 添加IP黑名單,當白名單和黑名單重復時,黑名單優先級更高

        servletRegistrationBean.addInitParameter("deny", "127.0.0.1");

        // 添加控制臺管理用戶

        servletRegistrationBean.addInitParameter("loginUsername", "SimpleWu");

        servletRegistrationBean.addInitParameter("loginPassword", "123456");

        // 是否能夠重置數據

        servletRegistrationBean.addInitParameter("resetEnable", "false");

        return servletRegistrationBean;

    }

 

    /**

     * 配置服務過濾器

     *

     * @return 返回過濾器配置對象

     */

    @Bean

    public FilterRegistrationBean statFilter() {

        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());

        // 添加過濾規則

        filterRegistrationBean.addUrlPatterns("/*");

        // 忽略過濾格式

        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*,");

        return filterRegistrationBean;

    }



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女