log4jdbc 配置驱动报错 the new driver class is com.mysql.cj.jdbc.Driver 解决

springboot项目内使用log4jdbc启动警告 解决方法

问题由来

之前项目用springboot + mybatisPlus 框架,引入log4jdbc实现SQL控制台中查询结果格式化。但是每次项目启动都会有一段红色的warning。完全影响使用,但是看着就是难受。

// 启动时报下面的警告,意识说没有找到mysql相关的驱动
Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver’. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

问题分析

这里结合源码解释,当配置文件中不去配置log4jdbc的驱动时,log4jdbc自己本身定义了一些缺省值,但在最新的版本中,默认驱动里都不包含com.mysql.cj.jdbc.Driver的驱动。

// log4jdbc 源代码
 log.debug("DriverSpy intialization...");
 Set<String> subDrivers = new TreeSet();
 if (net.sf.log4jdbc.Properties.isAutoLoadPopularDrivers()) {
     subDrivers.add("oracle.jdbc.driver.OracleDriver");
     subDrivers.add("oracle.jdbc.OracleDriver");
     subDrivers.add("com.sybase.jdbc2.jdbc.SybDriver");
     subDrivers.add("net.sourceforge.jtds.jdbc.Driver");
     subDrivers.add("com.microsoft.jdbc.sqlserver.SQLServerDriver");
     subDrivers.add("com.microsoft.sqlserver.jdbc.SQLServerDriver");
     subDrivers.add("weblogic.jdbc.sqlserver.SQLServerDriver");
     subDrivers.add("com.informix.jdbc.IfxDriver");
     subDrivers.add("org.apache.derby.jdbc.ClientDriver");
     subDrivers.add("org.apache.derby.jdbc.EmbeddedDriver");
     subDrivers.add("com.mysql.jdbc.Driver");
     subDrivers.add("org.postgresql.Driver");
     subDrivers.add("org.hsqldb.jdbcDriver");
     subDrivers.add("org.h2.Driver");
 }

这里其实说白了跟项目用的数据库有点关联。如果用的是MySql8.0以下版本的数据驱动,是没有问题的。但在8.0以上的版本,加载这个驱动包时,这个包就抛出了一个异常,对的,就是我们开篇说的,控制台输出的错误。
在这里插入图片描述

解决方法

那说道这其实就有几种解决办法,一劳永逸的方法就是增加一个配置,这里以yml为例,将自动加载设为false,之后自定义。连接多个数据库用逗号隔开。

# 配置log4jdbc自定义驱动
log4jdbc:
  auto:
    load:
      popular:
        drivers: false
  drivers: oracle.jdbc.driver.OracleDriver,com.mysql.cj.jdbc.Driver

总结

其实我这边用的是oracle,没用到mysql数据库。只是系统做架构把一些将来会用到的jar包都先整合了进来,如果本身没有引用mysql8.0的jar包,也是不会报错的。

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值