异常: Error creating bean with name ‘org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfig

原创博文,欢迎转载,转载时请务必附上博文链接,感谢您的尊重。

项目场景:

最近有朋友在学Java,为了方便她练习,手写了一个SpringBoot脚手架。在项目启动时,爆出标题中的问题。

1. 具体描述:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method 'dataSource' threw exception; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver 

2. 详见下图:

异常: Error creating bean with name ‘org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfig


原因分析:

我们通过几个关键词——“jpa”,“jdbc”,“dataSource”,可以确定该问题与数据库连接池有关,进一步分析可得:是数据库jdbc连接异常造成的启动失败。

该异常通常出现在两个位置:

  • jpa加载失败,即:pom.xml文件中引入了jap的驱动jar,但是yml文件中并未配置 jdbc.Dirver 相关的数据库信息;
  • com.mysql.jdbc.Dirver 加载失败,即:未找到yml文件中配置的数据库;

本文标题中的异常中,明确了“jpa”相关,并未涉及“com.mysql.jdbc.Dirver”,所以可以确定我的问题是上述【第一种情况】。

原来如此,我在 pom.xml 文件加入了 jpa 的引用, 项目启动时会去读 yml 或 properties 文件里的 jdbc 配置,没有就报错。


解决方案:

根据自身需求,有两种解决办法:

  • 如果暂时不需要数据库,就在 pom.xml 文件中去掉 jpa 的引用,编译器不会加载 jdbc 相关配置,自然不会报错(Mysql相关引用没关系,因为不涉及启动加载);

异常: Error creating bean with name ‘org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfig

  • 如果需要用到数据库,在 yml 或 properties 文件里假如 jdbc 相关配置即可,参考如下:
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/local_data?useUnicode=true&characterEncoding=utf-8
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource

我是 IT无知君,您的点赞、评论和关注,是我不懈创作的动力。
学无止境,气有浩然,让我们一起加油,天涯未远,江湖有缘再见!!

上一篇:Java8 Optional


下一篇:【Java8新特性】Stream API