全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Spring Boot数据库链接池配置方法

配置方法

基于当前的1.5.2.RELEASE的Spring Boot。

依照官方文档,如果增加了如下依赖的配置,或者类路径中存在spring-boot-starter-jdbc的jar,那么已默认启用了数据库链接池。

 <dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jdbc</artifactId>
 </dependency>

Spring Boot选择数据库链接池实现的判断逻辑:

1.检查Tomcat的数据库链接池实现是否可用,如可用,则启用。使用spring.datasource.tomcat.*可以控制链接池的行为。

2.检查HikariCP是否可用,如可用,则启用。使用spring.datasource.hikari.*可以控制链接池的行为。

3.检查Commons DBCP是否可用,如可用,则启用;但Spring Boot不建议在生产环境使用该链接池的实现。

4.检查Commons DBCP2是否可用,如可用,则启用。使用spring.datasource.dbcp2.*可以控制链接池的行为。

使用tomcat-jdbc时,可在application.yml增加配置项spring.datasource.tomcat.*来控制链接池的行为。比如如下配置。

spring:

datasource:
  url: jdbc:mysql://localhost:3306/jackieathome?useSSL=false
  username: root
  password: mypassword
  # 6.x版本的MySQL JDBC驱动类为com.mysql.cj.jdbc.Driver
  # 5.X版本的MySQL JDBC驱动类为com.mysql.jdbc.Driver
  driver-class-name: com.mysql.cj.jdbc.Driver
  tomcat:
   max-wait: 10000
   max-active: 30
   test-on-borrow: true
   # 传递MySQL JDBC特有的参数
   db-properties:
    logger: net.jackieathome.db.customized.MySQLLogger
    gatherPerfMetrics: 'true'
    profileSQL: 'true'
    reportMetricsIntervalMillis: '60000'
    logSlowQueries: 'true'
    explainSlowQueries: 'true'

    logging:

 level:
  # 关闭其它软件的日志,减少干扰
  org: ERROR
  net: ERROR
  com: ERROR
  # 开启MySQL JDBC驱动的日志
  MySQL: DEBUG

上述spring.datasource.tomcat.*代表的配置项,可参考tomcat-jdbc的官方文档Apache Tomcat 8.5 - The Tomcat JDBC Connection Pool或者Apache Tomcat 8.0 - The Tomcat JDBC Connection Pool

依据tomcat-jdbc的文档,如需要向数据库的JDBC驱动传入控制参数,可以使用db-properties字段。需要注意的是,当使用MySQL驱动时,控制参数的值需要强制转换为字符串,否则创建数据库链接时会报错。配置方法如上述样例中的 reportMetricsIntervalMillis: '60000'和logSlowQueries: 'true'。

依照MySQL JDBC驱动文档,可以配置一个日志记录器,用于记录其工作时的输出,如下是实现样例。

package net.jackieathome.db.customized;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MySQLLogger implements com.mysql.cj.api.log.Log {
  private static Logger LOG;
  public MySQLLogger(String name) {
    LOG = LoggerFactory.getLogger(name);
  }
  @Override
  public boolean isDebugEnabled() {
    return LOG.isDebugEnabled();
  }
  @Override
  public boolean isErrorEnabled() {
    return LOG.isErrorEnabled();
  }
  @Override
  public boolean isFatalEnabled() {
    return LOG.isErrorEnabled();
  }
  @Override
  public boolean isInfoEnabled() {
    return LOG.isInfoEnabled();
  }
  @Override
  public boolean isTraceEnabled() {
    return LOG.isTraceEnabled();
  }
  @Override
  public boolean isWarnEnabled() {
    return LOG.isWarnEnabled();
  }
  @Override
  public void logDebug(Object msg) {
    LOG.debug("{}", msg);
  }
  @Override
  public void logDebug(Object msg, Throwable thrown) {
    LOG.debug("{}", msg, thrown);
  }
  @Override
  public void logError(Object msg) {
    LOG.error("{}", msg);
  }
  @Override
  public void logError(Object msg, Throwable thrown) {
    LOG.error("{}", msg, thrown);
  }
  @Override
  public void logFatal(Object msg) {
    LOG.error("{}", msg);
  }
  @Override
  public void logFatal(Object msg, Throwable thrown) {
    LOG.error("{}", msg, thrown);
  }
  @Override
  public void logInfo(Object msg) {
    LOG.info("{}", msg);
  }
  @Override
  public void logInfo(Object msg, Throwable thrown) {
    LOG.info("{}", msg, thrown);
  }
  @Override
  public void logTrace(Object msg) {
    LOG.trace("{}", msg);
  }
  @Override
  public void logTrace(Object msg, Throwable thrown) {
    LOG.trace("{}", msg, thrown);
  }
  @Override
  public void logWarn(Object msg) {
    LOG.warn("{}", msg);
  }
  @Override
  public void logWarn(Object msg, Throwable thrown) {
    LOG.warn("{}", msg, thrown);
  }
}

同时修改application.yml,增加相应的日志配置,如下。

logging:
  level:
    # 开启MySQL JDBC驱动的日志
    MySQL: DEBUG

如下是MySQL JDBC驱动输出的样例日志。

2017-04-16 00:51:32.626 QUERY created: Sun Apr 16 00:51:32 CST 2017 duration: 0 connection: 93 statement: 1 resultset: 1 message: /* mysql-connector-java-6.0.6 ( Revision: 3dab84f4d9bede3cdd14d57b99e9e98a02a5b97d ) */SELECT  @@session.auto_increment_increment AS auto_increment_increment, @@character_set_client AS character_set_client, @@character_set_connection AS character_set_connection, @@character_set_results AS character_set_results, @@character_set_server AS character_set_server, @@init_connect AS init_connect, @@interactive_timeout AS interactive_timeout, @@license AS license, @@lower_case_table_names AS lower_case_table_names, @@max_allowed_packet AS max_allowed_packet, @@net_buffer_length AS net_buffer_length, @@net_write_timeout AS net_write_timeout, @@query_cache_size AS query_cache_size, @@query_cache_type AS query_cache_type, @@sql_mode AS sql_mode, @@system_time_zone AS system_time_zone, @@time_zone AS time_zone, @@tx_isolation AS tx_isolation, @@wait_timeout AS wait_timeout
2017-04-16 00:51:32.629 FETCH created: Sun Apr 16 00:51:32 CST 2017 duration: 36 connection: 93 statement: 1 resultset: 1
2017-04-16 00:51:32.639 QUERY created: Sun Apr 16 00:51:32 CST 2017 duration: 1 connection: 93 statement: 999 resultset: 0 message: SET NAMES latin1
2017-04-16 00:51:32.640 FETCH created: Sun Apr 16 00:51:32 CST 2017 duration: 0 connection: 93 statement: 999 resultset: 0
2017-04-16 00:51:32.642 QUERY created: Sun Apr 16 00:51:32 CST 2017 duration: 2 connection: 93 statement: 999 resultset: 0 message: SET character_set_results = NULL
2017-04-16 00:51:32.643 FETCH created: Sun Apr 16 00:51:32 CST 2017 duration: 0 connection: 93 statement: 999 resultset: 0
2017-04-16 00:51:32.645 QUERY created: Sun Apr 16 00:51:32 CST 2017 duration: 0 connection: 93 statement: 999 resultset: 0 message: SET autocommit=1
2017-04-16 00:51:32.646 FETCH created: Sun Apr 16 00:51:32 CST 2017 duration: 0 connection: 93 statement: 999 resultset: 0
2017-04-16 00:51:32.667 QUERY created: Sun Apr 16 00:51:32 CST 2017 duration: 1 connection: 94 statement: 2 resultset: 2 message: /* mysql-connector-java-6.0.6 ( Revision: 3dab84f4d9bede3cdd14d57b99e9e98a02a5b97d ) */SELECT  @@session.auto_increment_increment AS auto_increment_increment, @@character_set_client AS character_set_client, @@character_set_connection AS character_set_connection, @@character_set_results AS character_set_results, @@character_set_server AS character_set_server, @@init_connect AS init_connect, @@interactive_timeout AS interactive_timeout, @@license AS license, @@lower_case_table_names AS lower_case_table_names, @@max_allowed_packet AS max_allowed_packet, @@net_buffer_length AS net_buffer_length, @@net_write_timeout AS net_write_timeout, @@query_cache_size AS query_cache_size, @@query_cache_type AS query_cache_type, @@sql_mode AS sql_mode, @@system_time_zone AS system_time_zone, @@time_zone AS time_zone, @@tx_isolation AS tx_isolation, @@wait_timeout AS wait_timeout

以上所述是小编给大家介绍的Spring Boot数据库链接池配置方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# spring  # boot  # 数据库  # 如何把spring boot项目部署到tomcat容器中  # springboot + mybatis配置多数据源示例  # 详解SpringBoot文件上传下载和多文件上传(图文)  # Spring Boot MyBatis 连接数据库配置示例  # Spring Boot使用FastJson解析JSON数据的方法  # Spring Boot 启动端口如何启动  # springboot与mybatis整合实例详解(完美融合)  # 文档  # 样例  # 小编  # 的是  # 记录器  # 在此  # 可在  # 给大家  # 可以使用  # 特有的  # 报错  # 如需  # 要向  # 转换为  # 所述  # 需要注意  # 给我留言  # 感谢大家  # 增加了  # 疑问请 


相关文章: 如何打造高效商业网站?建站目的决定转化率  如何确保FTP站点访问权限与数据传输安全?  如何配置FTP站点权限与安全设置?  如何高效完成自助建站业务培训?  如何快速搭建个人网站并优化SEO?  建站之星展会模版如何一键下载生成?  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  如何基于云服务器快速搭建个人网站?  如何高效完成独享虚拟主机建站?  家庭服务器如何搭建个人网站?  南平网站制作公司,2025年南平市事业单位报名时间?  建站VPS选购需注意哪些关键参数?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  企业微网站怎么做,公司网站和公众号有什么区别?  网站制作员失业,怎样查看自己网站的注册者?  网站制作软件有哪些,制图软件有哪些?  企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?  如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何选择高效便捷的WAP商城建站系统?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  如何快速生成可下载的建站源码工具?  建站主机类型有哪些?如何正确选型  如何快速搭建高效服务器建站系统?  python的本地网站制作,如何创建本地站点?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  教学论文网站制作软件有哪些,写论文用什么软件 ?  如何在搬瓦工VPS快速搭建网站?  如何快速选择适合个人网站的云服务器配置?  Python多线程使用规范_线程安全解析【教程】  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  如何在阿里云通过域名搭建网站?  深圳网站制作案例,网页的相关名词有哪些?  教学网站制作软件,学习*后期制作的网站有哪些?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  建站之星会员如何解锁更多建站功能?  可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  建站之星价格显示格式升级,你的预算足够吗?  如何通过远程VPS快速搭建个人网站?  西安大型网站制作公司,西安招聘网站最好的是哪个?  如何快速打造个性化非模板自助建站?  制作门户网站的参考文献在哪,小说网站怎么建立?  网站制作需要会哪些技术,建立一个网站要花费多少?  建站之星后台管理如何实现高效配置?  建站主机功能解析:服务器选择与快速搭建指南  广州商城建站系统开发成本与周期如何控制?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。