java - HikariCP + Hibernate + MySql : warnings even when defining correct 'driverClassName' property

标签 java spring hibernate mysql-connector hikaricp

我在我的 Maven 项目中遇到了 HikariCPMySql 的问题:出现警告,提示:

Loading class 'com.mysql.jdbc.Driver'. This is deprecated. The new driver class is 'com.mysql.cj.jdbc.Driver'. The driver has automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

我想摆脱这个警告。

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

这是pom.xml中的maven依赖:

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

然后,我有一个名为 hikaricp-hibernate.properties

的属性文件
jdbcUrl=jdbc:mysql://localhost:3306/local_database
driverClassName=com.mysql.cj.jdbc.Driver

#user and password and other data omitted

现在,对于 HibernateConfiguration 我有:

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 注册为 beans,但这里的代码并不重要。

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

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

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

The MySQL DataSource is known to be broken with respect to network timeout support. Use jdbcUrl configuration instead.

为什么?

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

最佳答案

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

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

如果正在加载旧驱动程序,则它不在这段代码中 - 它要么位于单独的应用程序中,要么位于该应用程序的其他位置。

关于java - HikariCP + Hibernate + MySql : warnings even when defining correct 'driverClassName' property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57096833/

相关文章:

java - 如何在 Android 中创建动态颜色指示器?

hibernate - 如何为多个 session 范围的 DSN 配置 ColdFusion 的 ORM?

java - 连接表@OneToMany/@ManyToOne

java - 如何选择 datetime mysql 类型作为 java.time.LocalDateTime?

java - hibernate:如何将变量映射为外键

java - 在 JComboBox 事件中的 JFrame 中显示图像

java - 传递到方法时不向树分配新节点

java - JUNIT测试void方法

java - 如何自定义 IDP 登录页面

java - Spring Boot - 如何从多模块项目中的姐妹模块启动我的 Spring Boot 应用程序?