HikariCP + Hibernate + MySql:即使定义了正确的"driverClassName"属性也会发出警告



我在maven 项目中遇到了 HikariCPMySql的问题:出现一条警告说:

加载类 'com.mysql.jdbc.Driver'.这已弃用。新的驱动程序类是"com.mysql.cj.jdbc.Driver"。驱动程序已通过 SPI 自动注册,通常不需要手动加载驱动程序类。

我想摆脱这个警告。

为此,我需要知道为什么即使将最新版本的mavenMySql连接器和HikariCP配置设置为设置类com.mysql.cj.jdbc.Driver(这是未弃用的),此警告仍然会出现。

这是pom中的maven依赖.xml:

<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>

然后,我有一个名为hikaricp-hibernate的属性文件。

jdbcUrl=jdbc:mysql://localhost:3306/local_database
driverClassName=com.mysql.cj.jdbc.Driver
#user and password and other data omitted

现在,对于休眠配置,我有:

package mypackage;
// ... imports
@Configuration
@EnableTransactionManagement
public class HibernateConfig {
private static final String HIBERNATE_PROPERTIES = "/hikaricp-hibernate.properties";
@Bean(name = "hikariDataSource")
public DataSource dataSource() {
HikariConfig config = new HikariConfig(HIBERNATE_PROPERTIES);
HikariDataSource dataSource = new HikariDataSource(config);
return dataSource;
}
}

在同一个类中,我将 LocalSessionFactoryBean 和 TransactionManager 注册为 bean,但代码在这里无关紧要。

我还已经在调试模式下检查了配置,以查看 driverClassName 是否是我放置的那个,答案是肯定的。

因此,即使正确注册,也会显示日志。

另外,HikariCP 文档告诉我使用jdbcUrl配置:

已知 MySQL 数据源在网络超时支持方面已损坏。请改用 jdbcUrl 配置。

为什么?

jdbcUrl配置是否会自动触发旧类(如果是,我如何覆盖并避免这种情况?然后它似乎已被弃用并搜索另一个?它会忽略我的driverClassName配置吗?

这里的代码没有问题 - 关键点是:

  • 您列出了对 mysql 连接器的 8.* 分支的依赖关系,该分支包含新的 JDBC 驱动程序
  • 您将在属性文件中的driverClassName下列出新驱动程序
  • 正在使用您定义的属性正确实例化HikariConfig

如果正在加载旧驱动程序,则它不在此代码中 - 它要么与单独的应用程序一起使用,要么在此应用程序中的其他位置。

最新更新