SpringBoot1.X整合数据库连接池HikariCP

SpringBoot2默认的数据库连接池已经是HikariCP,所以不需要再配置,SpringBoot2版本之前的则需要配置

添加maven依赖

<!-- JDBC连接数据库,因为要用HikariCP,所以需要将SpringBoot中的tomcat-jdbc排除 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- HikariCP 连接池依赖,从父依赖获取额版本 -->
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <!-- <scope>runtime</scope> -->
</dependency> 

添加配置

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test1?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=root
spring.datasource.password=hongda$123456
spring.datasource.driverClassName=com.mysql.jdbc.Driver
 
spring.datasource.max-idle=10
spring.datasource.max-active=15
spring.datasource.max-lifetime=86430000
spring.datasource.log-abandoned=true
spring.datasource.remove-abandoned=true
spring.datasource.remove-abandoned-timeout=60
spring.datasource.initialize=false
spring.datasource.sqlScriptEncoding=UTF-8

新建配置类DataSourceConfig.java

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
import javax.sql.DataSource;
 
 
/**
 * HikariCP连接池配置
 */
@Configuration
public class DataSourceConfig {
 
    @Value("${spring.datasource.url}")
    private String dataSourceUrl;
 
    @Value("${spring.datasource.username}")
    private String user;
 
    @Value("${spring.datasource.password}")
    private String password;
 
    @Bean
    public DataSource dataSource() {
        HikariConfig config = new HikariConfig();
        /** 数据源 */
        config.setJdbcUrl(dataSourceUrl); 
        /** 用户名 */
        config.setUsername(user); 
        /** 密码 */
        config.setPassword(password); 
        /** 是否自定义配置,为true时下面两个参数才生效 */
        config.addDataSourceProperty("cachePrepStmts", "true");
        /** 连接池大小默认25,官方推荐250-500 */
        config.addDataSourceProperty("prepStmtCacheSize", "250"); 
        /** 单条语句最大长度默认256,官方推荐2048 */
        config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
        /** 新版本MySQL支持服务器端准备,开启能够得到显著性能提升 */
        config.addDataSourceProperty("useServerPrepStmts", "true"); 
        config.addDataSourceProperty("useLocalSessionState", "true");
        config.addDataSourceProperty("useLocalTransactionState", "true");
        config.addDataSourceProperty("rewriteBatchedStatements", "true");
        config.addDataSourceProperty("cacheResultSetMetadata", "true");
        config.addDataSourceProperty("cacheServerConfiguration", "true");
        config.addDataSourceProperty("elideSetAutoCommits", "true");
        config.addDataSourceProperty("maintainTimeStats", "false");
 
        HikariDataSource ds = new HikariDataSource(config);
        return ds;
    }
}

发布了36 篇原创文章 · 获赞 4 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/weixin_41205148/article/details/100783983