1. 程式人生 > >springboot整合durid

springboot整合durid

本人對各種連線池瞭解的並不深入,也對各種連線池的效率停留在大佬們的口述中,偶爾一次機會遇到了durid,感覺它的監控介面是如此的強大,由此激發我整合durid的興趣。durid的監控介面如下:

首先需要做的是引用maven依賴,每次都是按照下載數比較高的版本進行使用的(想必有很多人與我一樣),此處使用的版本是1.1.1版本。

<!--阿里巴巴druid資料庫連線池--><!--http://localhost:8080/druid/index.html-->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.1.1</version>
</dependency>

將application.yml改為如下格式的配置,配置內容不多講,註解已經寫的很詳細了。

server:
  port: 2048

spring:
  profiles:
    active: dev

druid:
  allow: #允許登陸的IP地址
    ip: 127.0.0.1
  login: #登陸的賬戶密碼
    user_name: root
    password: root

---
spring:
  profiles: dev
  datasource:
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/xichuan?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
    # 連線池的配置資訊
    # 初始化大小,最小等待連線數量,最大等待連線數量,最大連線數
    initialSize: 1
    minIdle: 1
    maxIdle: 5
    maxActive: 20
    # 配置獲取連線等待超時的時間
    maxWait: 60000
    # 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒
    timeBetweenEvictionRunsMillis: 60000
    # 配置一個連線在池中最小生存的時間,單位是毫秒
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: true
    testOnReturn: false
    # 開啟PSCache,並且指定每個連線上PSCache的大小
    poolPreparedStatements: false
    maxPoolPreparedStatementPerConnectionSize: 20
    # 配置監控統計攔截的filters,去掉後監控介面sql無法統計,'wall'用於防火牆
    filters: stat,wall,log4j
    # 通過connectProperties屬性來開啟mergeSql功能;慢SQL記錄
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    # 合併多個DruidDataSource的監控資料
    #spring.datasource.useGlobalDataSourceStat=true



新增的duridConfig配置檔案,配置資訊一看就知道是幹什麼了,其中一定要配置durid的資料來源,不然無法獲取到sql監控與防火牆監控。

@Configuration
public class DruidConfig {

    private static final Logger log = LoggerFactory.getLogger(DruidConfig.class);

    @Value("${druid.login.user_name}")
    private String userName;

    @Value("${druid.login.password}")
    private String password;

    @Value("${druid.allow.ip}")
    private String allowIp;

    /**必須配置資料來源,不然無法獲取到sql監控,與sql防火牆監控*/
    @Bean(name = "default_databaseSource")
    @ConfigurationProperties(prefix="spring.datasource")
    public DataSource druidDataSource() {
        return new DruidDataSource();
    }

    @Bean
    public ServletRegistrationBean druidServlet() {
        log.info("init Druid Servlet Configuration ");
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
        servletRegistrationBean.setServlet(new StatViewServlet());
        servletRegistrationBean.addUrlMappings("/druid/*");
        Map<String, String> initParameters = new HashMap<>();
        initParameters.put("loginUsername", userName);// 使用者名稱
        initParameters.put("loginPassword", password);// 密碼
        initParameters.put("resetEnable", "false");// 禁用HTML頁面上的“Reset All”功能
        //initParameters.put("allow", allowIp); // IP白名單 (沒有配置或者為空,則允許所有訪問)
        //initParameters.put("deny", "");// IP黑名單 (存在共同時,deny優先於allow)
        servletRegistrationBean.setInitParameters(initParameters);
        return servletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean filterRegistrationBean() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new WebStatFilter());
        filterRegistrationBean.addUrlPatterns("/*");
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }
}

此時配置已經完成,只需要訪問:http://192.168.1.190:2048/druid/login.html,使用root/root 登進登陸即可使用了。