三、Druid和HikariCP

Druid和HikariCP


来自于《Spring Boot微服务项目实战》该书所记录的笔记。

一、集成Druid

Druid是阿里巴巴开源项目中的数据库连接池,在监控和性能方面有明显优势,它包括三个部分:

  1. DruidDriver:代理Driver,提供Filter-Chain模式的插件体系。
  2. DruidDataSource:高效可管理的数据库连接池。
  3. SQLParser:所支持的数据库。

1、引入依赖

在pom文件中添加如下代码:

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.2.3</version>
</dependency>

2、druid配置

在application.properties中添加如下代码:

### MySQL连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC
### 用户名
spring.datasource.username=root
### 密码
spring.datasource.password=zrb19990210..
### 驱动
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

### 连接池指定 springboot2.x版本默认使用HikariCP 此处要替换成Druid
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

创建src\main\java\com\example\demo\filter\DruidConfiguration.java,代码如下:

package com.example.demo.filter;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.activation.DataSource;
import java.sql.SQLException;

@Configuration//在项目启动时可以初始化配置
public class DruidConfiguration {
    
    
    @Bean
    public ServletRegistrationBean staViewServlet(){
    
    
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),
                "/druid/*");
//白名单为空允许任何ip访问
        servletRegistrationBean.addInitParameter("allow","127.0.0.1");
//ip黑名单(存在共同时,deny优先于allow):如果满足deny的即提示:Sorry you are not permitted...
        servletRegistrationBean.addInitParameter("deny","127.0.0.2");
//登录查看信息的账号密码
        servletRegistrationBean.addInitParameter("loginUsername","druid");
        servletRegistrationBean.addInitParameter("loginPassword","druid");
//是否能够重置数据
        servletRegistrationBean.addInitParameter("resetEnable","true");
        return servletRegistrationBean;
    }

    @Bean
    public FilterRegistrationBean statFilter(){
    
    
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
//添加过滤规则
        filterRegistrationBean.addUrlPatterns("/*");
//添加不需要忽略的格式信息
        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpn,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }

    //配置数据库的基本连接信息
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")//在application.properties中读取配置信息注入到DruidDataSource里
    public DataSource dataSource(){
    
    
        DruidDataSource druidDataSource = DataSourceBuilder.create().type(DruidDataSource.class).build();
        druidDataSource.setInitialSize(3);//初始化物理连接的数量
        try {
    
    
            druidDataSource.addFilters("stat,wall");//stat是sql监控,wall是防火墙(如果不添加则监控无效),不能添加log4j不然会出错
        } catch (SQLException e) {
    
    
            e.printStackTrace();
        }
        return (DataSource) druidDataSource;
    }

}

访问http://127.0.0.1:8080/druid/login.html
在这里插入图片描述
在这里插入图片描述

二、HikariCP连接池

HikariCP 是一个高性能的 JDBC 连接池组件,Spring Boot默认使用。

1.引入库

猜你喜欢

转载自blog.csdn.net/weixin_44047795/article/details/110823752