关于HikariCP的见解

简洁

HikariCP是一个高性能的JDBC连接池组件。Spring Boot 2都已经宣布支持了该组件,由之前的Tomcat换成HikariCP。

依赖


        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.23</version>
        </dependency>

        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>4.0.3</version>
            <scope>provided</scope>
        </dependency>

HikariConfig参数


autoCommit    自动提交从池中返回的连接
connectionTimeout    等待来自池的连接的最大毫秒数
idleTimeout    连接允许在池中闲置的最长时间 
maxLifetime    池中连接最长生命周期   
minimumIdle    池中维护的最小空闲连接数 
maximumPoolSize    池中最大连接数,包括闲置和使用中的连接  
poolName    连接池的用户定义名称
isolateInternalQueries    是否在其自己的事务中隔离内部池查询
allowPoolSuspension    控制池是否可以通过JMX暂停和恢复-
readOnly    从池中获取的连接是否默认处于只读模式
registerMbeans    是否注册JMX管理Bean(MBeans)
catalog    为支持 catalog 概念的数据库设置默认 catalog    
connectionInitSql    该属性设置一个SQL语句,在将每个新连接创建后,将其添加到池中之前执行该语句。
transactionIsolation    控制从池返回的连接的默认事务隔离级别
validationTimeout    连接将被测试活动的最大时间量

driverClassName: 数据库驱动
jdbcUrl: 数据源
username: 用户名
password: 密码

工具类

@Configuration
public class MysqlConfig {

    @Value("${spring.datasource.driver-class-name}")
    private String driverClassName;

    @Value("${spring.datasource.url}")
    private String url;

    @Value("${spring.datasource.username}")
    private String username;

    @Value("${spring.datasource.password}")
    private String password;

    private static HikariDataSource dataSource = null;

    @PostConstruct
    public void mysqlDataSource() {
        Properties pro = new Properties();
        pro.setProperty("driverClassName", driverClassName);
        pro.setProperty("jdbcUrl", url);
        pro.setProperty("username", username);
        pro.setProperty("password", password);

        HikariConfig config = new HikariConfig(pro);
        dataSource = new HikariDataSource(config);
    }

    public static DataSource getHikariCPDataSource() {
        return dataSource;
    }

    public static Connection getHikeriCPConnection() throws SQLException {
        return dataSource.getConnection();
    }

    public static void close(Statement stmt, Connection conn) {
        close(null, stmt, conn);
    }

    public static void close(ResultSet rs, Statement stmt, Connection conn) {
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn != null) {
            try {
                conn.close();// 归还连接
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    // 销毁前清除连接
    @PreDestroy
    public void closeDataSource(){
        dataSource.close();
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值