默认连接池

tomcat jdbc是从tomcat7开始推出的一个连接池,相比老的dbcp连接池要优秀很多。spring boot将tomcat jdbc作为默认的连接池,只要在pom.xml中引入了spring boot 的jdbc组件,就会自动引入tomcat jdbc连接池。关于引入jdbc和数据库的连接配置,参考第六篇

默认参数

以下是org.apache.tomcat.jdbc.pool.PoolProperties源码,这是tomcat jdbc连接池的默认初始参数。
这个类实现了一个接口PoolConfiguration,查看这个接口的源码,里面有每一个参数的详细说明。
官方文档: http://tomcat.apache.org/tomcat-8.5-doc/jdbc-pool.html 
  1. public class PoolProperties implements PoolConfiguration, Cloneable, Serializable {
  2.  
  3. private static final long serialVersionUID = -8519283440854213745L;
  4. private static final Log log = LogFactory.getLog(PoolProperties.class);
  5.  
  6. public static final int DEFAULT_MAX_ACTIVE = 100;
  7.  
  8. protected static final AtomicInteger poolCounter = new AtomicInteger(0);
  9. private volatile Properties dbProperties = new Properties();
  10. private volatile String url = null;
  11. private volatile String driverClassName = null;
  12. private volatile Boolean defaultAutoCommit = null;
  13. private volatile Boolean defaultReadOnly = null;
  14. private volatile int defaultTransactionIsolation = DataSourceFactory.UNKNOWN_TRANSACTIONISOLATION;
  15. private volatile String defaultCatalog = null;
  16. private volatile String connectionProperties;
  17. private volatile int initialSize = 10;
  18. private volatile int maxActive = DEFAULT_MAX_ACTIVE;
  19. private volatile int maxIdle = maxActive;
  20. private volatile int minIdle = initialSize;
  21. private volatile int maxWait = 30000;
  22. private volatile String validationQuery;
  23. private volatile int validationQueryTimeout = -1;
  24. private volatile String validatorClassName;
  25. private volatile Validator validator;
  26. private volatile boolean testOnBorrow = false;
  27. private volatile boolean testOnReturn = false;
  28. private volatile boolean testWhileIdle = false;
  29. private volatile int timeBetweenEvictionRunsMillis = 5000;
  30. private volatile int numTestsPerEvictionRun;
  31. private volatile int minEvictableIdleTimeMillis = 60000;
  32. private volatile boolean accessToUnderlyingConnectionAllowed = true;
  33. private volatile boolean removeAbandoned = false;
  34. private volatile int removeAbandonedTimeout = 60;
  35. private volatile boolean logAbandoned = false;
  36. private volatile String name = "Tomcat Connection Pool["+(poolCounter.addAndGet(1))+"-"+System.identityHashCode(PoolProperties.class)+"]";
  37. private volatile String password;
  38. private volatile String username;
  39. private volatile long validationInterval = 3000;
  40. private volatile boolean jmxEnabled = true;
  41. private volatile String initSQL;
  42. private volatile boolean testOnConnect =false;
  43. private volatile String jdbcInterceptors=null;
  44. private volatile boolean fairQueue = true;
  45. private volatile boolean useEquals = true;
  46. private volatile int abandonWhenPercentageFull = 0;
  47. private volatile long maxAge = 0;
  48. private volatile boolean useLock = false;
  49. private volatile InterceptorDefinition[] interceptors = null;
  50. private volatile int suspectTimeout = 0;
  51. private volatile Object dataSource = null;
  52. private volatile String dataSourceJNDI = null;
  53. private volatile boolean alternateUsernameAllowed = false;
  54. private volatile boolean commitOnReturn = false;
  55. private volatile boolean rollbackOnReturn = false;
  56. private volatile boolean useDisposableConnectionFacade = true;
  57. private volatile boolean logValidationErrors = false;
  58. private volatile boolean propagateInterruptState = false;
  59. private volatile boolean ignoreExceptionOnPreLoad = false;
  60. private volatile boolean useStatementFacade = true;

自定义参数

如果要修改某个默认参数值,可以在application.properties中配置,如下
spring.datasource.tomcat是前缀,maxActive是参数名,105是参数值,其他 参数格式也是一样
  1. spring.datasource.tomcat.maxActive=105

在JAVA中自定义参数

在properties中自定义参数有一个问题,如果参数名写错了,是不会有任何错误提示的,会继续使用默认值 。在JAVA中配置可以避免这个问题,以下是设置maxActive参数,set其他参数也是一样
  1. @Bean
  2. public DataSource dataSource() {
  3. PoolProperties poolProperties = new PoolProperties();
  4. poolProperties.setMaxActive(105);
  5. return new DataSource(poolProperties);
  6. }

HikariCP

HikariCP是目前号称最好的连接池,没有之一。不过tomcat连接池有tomcat做为其后盾保障, 文档资料齐全,也更加持久稳妥。这里不讲解 HikariCP,有兴趣可访问https://github.com/brettwooldridge/HikariCP

spring boot(10)-tomcat jdbc连接池的更多相关文章

  1. Spring boot (12) tomcat jdbc连接池

    默认连接池 tomcat jdbc是从tomcat7开始推出的一个连接池,相比老的dbcp连接池要优秀很多,spring boot将tomcat jdbc作为默认的连接池,只要在pom.xml中引入了 ...

  2. 在 Spring Boot 中使用 HikariCP 连接池

    上次帮小王解决了如何在 Spring Boot 中使用 JDBC 连接 MySQL 后,我就一直在等,等他问我第三个问题,比如说如何在 Spring Boot 中使用 HikariCP 连接池.但我等 ...

  3. Spring boot中配置HikariCP连接池

    # jdbc_config datasourcespring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasourc ...

  4. 使用了Tomcat JDBC连接池不能重连的问题

    在项目中用到了tomcat 的jdbc连接池,发现一个问题是,当数据库重启时,服务没有重新的去连接数据库,需要将部署的项目重新启动才能连接到数据库.经过测试对配置做一下修改: 在配置dataSourc ...

  5. spring boot 学习(四)Druid连接池的使用配置

    Druid介绍 Druid是一个JDBC组件,druid 是阿里开源在 github 上面的数据库连接池,它包括三部分: * DruidDriver 代理Driver,能够提供基于Filter-Cha ...

  6. spring boot配置druid数据连接池

    Druid是阿里巴巴开源项目中一个数据库连接池. Druid是一个jdbc组合,包含三个部分, 1.DruidDriver代理Driver,能够提供基于Filter-Chain模式得插件体系2.Dru ...

  7. 被缠上了,小王问我怎么在 Spring Boot 中使用 JDBC 连接 MySQL

    上次帮小王入了 Spring Boot 的门后,他觉得我这个人和蔼可亲.平易近人,于是隔天小王又微信我说:"二哥,快教教我,怎么在 Spring Boot 项目中使用 JDBC 连接 MyS ...

  8. Tomcat 的 JDBC 连接池

    JDBC 连接池 org.apache.tomcat.jdbc.pool 是 Apache Commons DBCP 连接池的一种替换或备选方案. 那究竟为何需要一个新的连接池? 原因如下: Comm ...

  9. Spring+SpringMVC+MyBatis+easyUI整合优化篇(九)数据层优化-jdbc连接池简述、druid简介

    日常啰嗦 终于回到既定轨道上了,这一篇讲讲数据库连接池的相关知识,线程池以后有机会再结合项目单独写篇文章(自己给自己挖坑,不知道什么时候能填上),从这一篇文章开始到本阶段结束的文章都会围绕数据库和da ...

随机推荐

  1. centos6 和 centos7 网络配置

    centos 6配置,1 vim /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE="eth0" BOOTPROTO="st ...

  2. sql_auoload_regiester() 解释(转载)

    在了解这个函数之前先来看另一个函数:__autoload. 一.__autoload 这是一个自动加载函数,在PHP5中,当我们实例化一个未定义的类时,就会触发此函数.看下面例子: 运行index.P ...

  3. sql返回行id

    1.sql语句中 insert into tableName() output inserted.id values() 2 .存储过程中 ALTER PROCEDURE dbo.getBuyMedi ...

  4. PostgreSQL执行超时的问题

    PostgreSQL执行超时的问题 使用背景 最近在使用PostgreSQL的时候,在执行一些数据库事务的时候,先后出现了statement timetout 和idle-in-transaction ...

  5. [C语言]类型限定词const解析

    作为C90增加的一个受限类型关键字,const赋予了它修饰的变量一个新属性——不变性,如果一个变量声明中带有关键字const,则无法通过赋值.增减运算来修改该变量的值. 一.指针与const结合 co ...

  6. JDK动态代理[2]----JDK动态代理的底层实现之Proxy源码分析

    在上一篇里为大家简单介绍了什么是代理模式?为什么要使用代理模式?并用例子演示了一下静态代理和动态代理的实现,分析了静态代理和动态代理各自的优缺点.在这一篇中笔者打算深入源码为大家剖析JDK动态代理实现 ...

  7. dev控件ASPxComboBox设置ReadOnly="true"后

    dev控件ASPxComboBox设置ReadOnly="true"后,在后台OnCallback事件中赋值前台不显示

  8. Winform无边框窗体拖动

    调用示例 当然,BUG还是有的,不过基本需求倒也可以

  9. 招新系统(jsp+servlet,实现简略前端网页注册登录+后台增删改查,分学生和管理员,Java语言,mysql数据库连接,tomcat服务器)

    生活不只是眼前的苟且,还有诗和远方. 架构说明: 要求是采用MVC模式,所以分了下面的几个包,但是由于是第一次写,可能分的也不是很清楚: 这个是后台部分的架构: 这个是前端的的展示: (那个StuLo ...

  10. 【原】Nginx搭建FTP服务器的细节问题

    关于文件服务器很多实现方法,比如采用阿里的分布式文件系统FastDFS,以及自己内部搭建FTP服务器,这里记录一下关于nginx搭建FTP文件系统流程. ftp服务器搭建的步骤网上也是很多,这里贴一下 ...