【2.0】SpringBoot 2 Druidデータソースおよびモニタの構成

7146 ワード

Druidとは?
DruidはまずJava言語で最も優れたデータベース接続プールであり、アリババのオープンソースプロジェクトでもある.Druidはアリババが開発した監視と呼ばれるデータベース接続プールで、機能、性能、拡張性の面ではDBPP、C 3 P 0、BoneCP、Proxool、JBoss Data Sourceなど、他のデータベース接続プールを上回っています.またDruidはすでにアリババに600以上のアプリケーションを配備しており、数年の生産環境の大規模な配置の厳しい試練を経ています.
filters: stat,wall,log4j
stat:Druidには、監視情報を統計するためのStatFilterが内蔵されています.アクセスページを構成する必要がある場合は、https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AEああ、私はまだこれを研究していません.研究の面倒があるので、教えてください.後で更新する機会を探して、結局使いやすいです.wall:DruidがSQL注入攻撃を防御するWallFilterはDruidのSQL Parserによって分析されます.Druidが提供するSQL Parserは、JDBCレイヤでSQLをブロックして対応する処理を行うことができます.たとえば、ライブラリのサブテーブル、監査などです.log 4 j:これがログ記録の機能で、sql文をlog 4 jに印刷して問題を調べることができます.
 
 
方式一、サードパーティdruidパッケージの導入

    com.alibaba
    druid
    1.1.12

ただし、構成時に手動でDruidDataSourceとモニタを構成する必要があります.この過程でClassNotFound:DruidDataSource(jarが正しく参照されている場合)やその他のエラーが発生したため、この方法は使用されません.
/**
     * @Title:      
     * @Description: TODO
     * @return DataSource
     * @author Sunny 
     * @date 2018 10 31    2:57:45 
     * @throws
     */
    @Bean(name = "dataSource")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druid(){
//        DruidDataSource dataSource = new DruidDataSource();
//        dataSource.setDriverClassName(env.getProperty("spring.datasource.driver-class-name"));
//        dataSource.setUrl(env.getProperty("spring.datasource.url"));
//        dataSource.setUsername(env.getProperty("spring.datasource.username"));
//        dataSource.setPassword(env.getProperty("spring.datasource.password"));
//        dataSource.setInitialSize(Integer.valueOf(env.getProperty("spring.datasource.initial-size")));
//        dataSource.setMinIdle(Integer.valueOf(env.getProperty("spring.datasource.min-idle")));
//        dataSource.setMaxActive(Integer.valueOf(env.getProperty("spring.datasource.max-active")));
//        dataSource.setMaxWait(Integer.valueOf(env.getProperty("spring.datasource.max-wait")));
//        return dataSource;
        return new DruidDataSource();
    }

 
方式二、druid-spring-boot-starterパッケージの導入

   com.alibaba
   druid-spring-boot-starter
   1.1.10

application.yml構成
#     
spring: 
    application:
        name: provider-user
    datasource:
        username: root
        password: 
        driver-class-name: com.mysql.cj.jdbc.Driver  # mysql8.0    com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/enterprise?useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=GMT%2B8
        #type: com.alibaba.druid.pool.DruidDataSource  #   Druid   
        druid: 
            initial-size: 5  #      
            min-idle: 5  #   
            max-active: 100  #   
            max-wait: 60000  #       
            time-between-eviction-runs-millis: 60000  #              ,           ,     
            min-evictable-idle-time-millis: 300000  #                    ,     
            validationQuery: select 'x'
            test-while-idle: true  #       ,        
            test-on-borrow: false  #           ,       
            test-on-return: false  #                  
            filters: config,wall,stat  #          filters,       sql    ,'wall'     
            poolPreparedStatements: true
            maxPoolPreparedStatementPerConnectionSize: 20
            maxOpenPreparedStatements: 20
            connectionProperties: druid.stat.slowSqlMillis=200;druid.stat.logSlowSql=true;config.decrypt=true
            web-stat-filter:
                enabled: true
                url-pattern: /*
                exclusions: /druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico
                session-stat-enable: true
                session-stat-max-count: 10
            stat-view-servlet:
                enabled: true
                url-pattern: /druid/*
                reset-enable: true
                login-username: admin
                login-password: admin

注意:spring-boot 2では、構成に注記されているtype属性を使用しないでください.StringがDataSourceに変換できないエラーが報告されます.
 
モニタページ:http://localhost:ポート/druid/index.html