赞
踩
常用的数据库连接池使用的是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 出现下图则是配置成功
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。