spring boot 快速开发 -连接池配置

本篇文章是为了整理

常用的数据库连接池使用的是druid,可以配置监控 。spring boot 2 默认的连接池是HikariCP ,号称是性能最好的连接池。
(1)HikariCP 的配置
HikariCP是springboot2默认连接池。可以只使用必要配置,由spring boot 自动映射。

#必要配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver     
spring.datasource.url=jdbc:mysql://localhost:3306/database?useSSL=false(不适用ssl)
spring.datasource.username=
spring.datasource.password=

#常用配置
spring.datasource.hikari.auto-commit=true  #控制从池返回的连接的默认自动提交行为。默认值:true
spring.datasource.hikari.connection-timeout= #等待来自池的连接的最大毫秒数。默认值:30000(30秒)
spring.datasource.hikari.idle-timeout= #允许连接在池中闲置的最长时间。 默认值:600000(10分钟)
spring.datasource.hikari.max-lifetime= #连接的最大生存期。默认值:1800000(30分钟)
spring.datasource.hikari.connection-test-query= #确认与数据库的连接仍然存在之前将要执行的查询。(不支持JDBC4时设置)
spring.datasource.hikari.minimum-idle= #最小空闲连接数  默认值:10
spring.datasource.hikari.maximum-pool-size= #允许达到的最大大小,包括空闲和正在使用的连接。默认值:10

#不常用配置
spring.datasource.hikari.metric-registry= #允许使用的Codahale/Dropwizard 实例MetricRegistry来记录各种指标
spring.datasource.hikari.health-check-registry= #允许使用的Codahale/Dropwizard 的实例HealthCheckRegistry来报告当前的健康信息。
spring.datasource.hikari.pool-name= #连接池的名称
spring.datasource.hikari.initialization-fail-timeout= #连接失败时尝试时间
spring.datasource.hikari.isolate-internal-queries= #是否在其自己的事务中隔离内部池查询。该属性仅适用于autoCommit禁用的情况。 默认值:false
spring.datasource.hikari.allow-pool-suspension= #是否可以通过JMX暂停和恢复。默认值:false
spring.datasource.hikari.read-only= #获取的连接是否处于只读模式。默认值:false
spring.datasource.hikari.register-mbeans= #是否注册JMX管理Bean(“MBeans”)。 默认值:false
spring.datasource.hikari.catalog= #设置默认目录为支持目录的概念数据库。默认:驱动程序默认
spring.datasource.hikari.connection-init-sql= #每个新连接创建后,将其添加到池中之前执行该语句。默认值:无
spring.datasource.hikari.driver-class-name= #较老的驱动程序还必须指定。默认值:无
spring.datasource.hikari.transaction-isolation= #从池返回的连接的默认事务隔离级别。默认:驱动程序指定。
spring.datasource.hikari.validation-timeout= #连接测试活动的最长时间。默认值:5000
spring.datasource.hikari.leak-detection-threshold= #连接泄漏检测。默认值:0
spring.datasource.hikari.dataSource= #直接设置DataSource池的实例,而不是通过反射来构造。 默认值:无
spring.datasource.hikari.schema= #设置的默认模式。默认:驱动程序默认
spring.datasource.hikari.threadFactory= #设置用于创建池使用的所有线程的实例。 默认值:无
spring.datasource.hikari.scheduledExecutor= #设置用于各种内部计划任务的实例。默认值:无

(2)Druid的配置
Druid 由手动配置构造类,因为要配置监控页面。同时必须配置日志。

spring.datasource.url=jdbc:mysql://localhost:3006/database?useSSL=false
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource 
## 下面为连接池的补充设置
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.maxWait=60000 # 配置获取连接等待超时的时间
spring.datasource.timeBetweenEvictionRunsMillis=60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
spring.datasource.minEvictableIdleTimeMillis=300000 # 配置一个连接在池中最小生存的时间,单位是毫秒
spring.datasource.validationQuery=SELECT 1 FROM DUAL
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.filters=stat,wall,log4j # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
spring.datasource.logSlowSql=true #是否显示sql语句
@Configuration #(在启动时加载)
public class DruidConfig {

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

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

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

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

    @Value("${spring.datasource.initialSize}")
    private int initialSize;

    @Value("${spring.datasource.minIdle}")
    private int minIdle;

    @Value("${spring.datasource.maxActive}")
    private int maxActive;

    @Value("${spring.datasource.maxWait}")
    private int maxWait;

    @Value("${spring.datasource.timeBetweenEvictionRunsMillis}")
    private int timeBetweenEvictionRunsMillis;

    @Value("${spring.datasource.minEvictableIdleTimeMillis}")
    private int minEvictableIdleTimeMillis;

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

    @Value("${spring.datasource.testWhileIdle}")
    private boolean testWhileIdle;

    @Value("${spring.datasource.testOnBorrow}")
    private boolean testOnBorrow;

    @Value("${spring.datasource.testOnReturn}")
    private boolean testOnReturn;

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

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

    @Bean
    public ServletRegistrationBean druidServlet() {
        ServletRegistrationBean reg = new ServletRegistrationBean();
        reg.setServlet(new StatViewServlet());
        reg.addUrlMappings("/druid/*");
        reg.addInitParameter("loginUsername", username);
        reg.addInitParameter("loginPassword", password);
        reg.addInitParameter("logSlowSql", logSlowSql);
        return reg;
    }

    @Bean
    public FilterRegistrationBean filterRegistrationBean() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new WebStatFilter());
        filterRegistrationBean.addUrlPatterns("/*");
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        filterRegistrationBean.addInitParameter("profileEnable", "true");
        return filterRegistrationBean;
    }
    
    private static final Logger log = LoggerFactory.getLogger(DruidDataSource.class);
    
    @Bean
    public DataSource druidDataSource() {
        DruidDataSource datasource = new DruidDataSource();
        datasource.setUrl(dbUrl);
        datasource.setUsername(username);
        datasource.setPassword(password);
        datasource.setDriverClassName(driverClassName);
        datasource.setInitialSize(initialSize);
        datasource.setMinIdle(minIdle);
        datasource.setMaxActive(maxActive);
        datasource.setMaxWait(maxWait);
        datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
        datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
        datasource.setValidationQuery(validationQuery);
        datasource.setTestWhileIdle(testWhileIdle);
        datasource.setTestOnBorrow(testOnBorrow);
        datasource.setTestOnReturn(testOnReturn);
        try {
            datasource.setFilters(filters);
        } catch (SQLException e) {
            log.error("druid configuration initialization filter", e);
        }
        return datasource;
    }
}

启动以后访问该链接:http://localhost:8085/druid/login.html 出现下图则是配置成功
spring boot 快速开发 -连接池配置_第1张图片
spring boot 快速开发 -连接池配置_第2张图片

你可能感兴趣的:(spring,boot,2.x)