spring boot(10)-tomcat jdbc连接池
2017-07-09 11:18
267 查看
默认连接池
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
public class PoolProperties implements PoolConfiguration, Cloneable, Serializable { private static final long serialVersionUID = -8519283440854213745L; private static final Log log = LogFactory.getLog(PoolProperties.class); public static final int DEFAULT_MAX_ACTIVE = 100; protected static final AtomicInteger poolCounter = new AtomicInteger(0); private volatile Properties dbProperties = new Properties(); private volatile String url = null; private volatile String driverClassName = null; private volatile Boolean defaultAutoCommit = null; private volatile Boolean defaultReadOnly = null; private volatile int defaultTransactionIsolation = DataSourceFactory.UNKNOWN_TRANSACTIONISOLATION; private volatile String defaultCatalog = null; private volatile String connectionProperties; private volatile int initialSize = 10; private volatile int maxActive = DEFAULT_MAX_ACTIVE; private volatile int maxIdle = maxActive; private volatile int minIdle = initialSize; private volatile int maxWait = 30000; private volatile String validationQuery; private volatile int validationQueryTimeout = -1; private volatile String validatorClassName; private volatile Validator validator; private volatile boolean testOnBorrow = false; private volatile boolean testOnReturn = false; private volatile boolean testWhileIdle = false; private volatile int timeBetweenEvictionRunsMillis = 5000; private volatile int numTestsPerEvictionRun; private volatile int minEvictableIdleTimeMillis = 60000; private volatile boolean accessToUnderlyingConnectionAllowed = true; private volatile boolean removeAbandoned = false; private volatile int removeAbandonedTimeout = 60; private volatile boolean logAbandoned = false; private volatile String name = "Tomcat Connection Pool["+(poolCounter.addAndGet(1))+"-"+System.identityHashCode(PoolProperties.class)+"]"; private volatile String password; private volatile String username; private volatile long validationInterval = 3000; private volatile boolean jmxEnabled = true; private volatile String initSQL; private volatile boolean testOnConnect =false; private volatile String jdbcInterceptors=null; private volatile boolean fairQueue = true; private volatile boolean useEquals = true; private volatile int abandonWhenPercentageFull = 0; private volatile long maxAge = 0; private volatile boolean useLock = false; private volatile InterceptorDefinition[] interceptors = null; private volatile int suspectTimeout = 0; private volatile Object dataSource = null; private volatile String dataSourceJNDI = null; private volatile boolean alternateUsernameAllowed = false; private volatile boolean commitOnReturn = false; private volatile boolean rollbackOnReturn = false; private volatile boolean useDisposableConnectionFacade = true; private volatile boolean logValidationErrors = false; private volatile boolean propagateInterruptState = false; private volatile boolean ignoreExceptionOnPreLoad = false; private volatile boolean useStatementFacade = true;
自定义参数
如果要修改某个默认参数值,可以在application.properties中配置,如下spring.datasource.tomcat是前缀,maxActive是参数名,105是参数值,其他 参数格式也是一样
spring.datasource.tomcat.maxActive=105
在JAVA中自定义参数
在properties中自定义参数有一个问题,如果参数名写错了,是不会有任何错误提示的,会继续使用默认值 。在JAVA中配置可以避免这个问题,以下是设置maxActive参数,set其他参数也是一样@Bean public DataSource dataSource() { PoolProperties poolProperties = new PoolProperties(); poolProperties.setMaxActive(105); return new DataSource(poolProperties); }
HikariCP
HikariCP是目前号称最好的连接池,没有之一。不过tomcat连接池有tomcat做为其后盾保障, 文档资料齐全,也更加持久稳妥。这里不讲解 HikariCP,有兴趣可访问https://github.com/brettwooldridge/HikariCP相关文章推荐
- c3p0、dbcp、tomcat jdbc pool 连接池配置简介及常用数据库的driverClass和驱动包
- Tomcat 自带的 JDBC 连接池官方文档中文版
- DBCP,C3P0,Tomcat_JDBC 等连接池的性能及稳定性测试 druid待补充
- Tomcat6.0中jdbc连接池配置
- 使用 Tomcat 7 新的连接池 —— Tomcat jdbc pool
- Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置
- JDBC以及Tomcat连接池
- 【JAVAWEB学习笔记】10_JDBC连接池&DBUtils
- tomcat7+ 使用org.apache.tomcat.jdbc.pool.DataSource连接池已经把mysql-jdbc放lib下,还是报找不到类错误。
- 连接池c3p0 ,Proxool ,Druid ,Tomcat Jdbc Pool对比测试
- 建立基于 JDBC 的 Tomcat 连接池
- JDBC连接mysql,TOMCAT错误: Cannot convert value '0000-00-00 00:00:00' from column 10 to TIMESTAMP
- 新的数据库连接池Tomcat jdbc pool配置(tomcat7及其以上版本才有)
- c3p0、dbcp、tomcat jdbc pool 连接池配置简介
- 修改Tomcat的主配置文件,增加一个Postgre数据库JDBC连接池。
- 连接池配置c3p0、dbcp、tomcat jdbc pool 及常用数据库的driverClass和驱动包
- c3p0、dbcp、tomcat jdbc pool 连接池区别(推荐使用jdbc pool)
- Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置
- Tomcat7 新的数据库连接池Tomcat jdbc pool介绍和配置
- tomcat7的数据库连接池tomcatjdbc的25个优势