Spring Boot错误–创建在类路径资源DataSourceAutoConfiguration中定义的名称为“ dataSource”的bean时出错...

大家好,如果您使用的是Spring Boot,并且遇到诸如“无法为数据库类型NONE确定嵌入式数据库驱动程序类”或“在类路径资源ataSourceAutoConfiguration中定义的名称为'dataSource'的bean创建错误”之类的错误,那么您来对地方了地点。 在本文中,我们将研究导致Spring Boot错误发生的不同情况,以及如何解决这些问题。 此错误的普遍原因是Spring Boot的自动配置 ,它正在尝试为您自动配置DataSource ,但没有足够的信息。 它会自动尝试创建DataSourceAutoConfiguration bean的实例,并且失败了。

像其他Spring框架错误一样,堆栈跟踪看起来也很凌乱,使用Spring Boot可以改善这些问题,但是问题是我上面提到的这两个错误。

让我们看一下堆栈跟踪的外观:

org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.sql.DataSource org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration$NonEmbeddedConfiguration.dataSource()] threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE . If you want an embedded database please put a supported one on the classpath.:

[INFO] org.springframework.beans.factory.BeanCreationException: Cannot determine embedded database driver class for database type NONE. If you want an embedded database please put a supported one on the classpath.

1)由于启动程序依赖性导致Spring Boot错误

即使他们不需要数据库,我的一些朋友和读者也会遇到此错误。 他们收到此错误的主要原因是由于对启动程序的依赖,例如其中一些包含spring-boot-starter-data-jpa ,然后包含hibernate-entitymanager.jar并且它们不需要设置其他内容。

有时包括不正确的Starter POM也可以解决此问题,例如添加spring-boot-starter-jdbc而不是spring-boot-starter-data-jpa依赖项。

如果您知道,Spring Boot自动配置是由类路径中存在的JAR依赖项触发的,并且如果它拉出了您不需要的内容,则可能会出现这种类型的错误。

Spring Boot错误

2)由于缺少依赖性

有时您确实需要数据库,但是却忘记了包含
将驱动程序JAR文件放入类路径,这也可能导致此错误。 例如,您已在application.properties ,spring boots配置文件中指定了以下属性,但未在类路径中包含相应的MySQL JDBC驱动程序

spring.datasource.url = jdbc:mysql://localhost/test

spring.datasource.driver-class-name= com.mysql.jdbc.Driver

为了解决此错误,您需要包括正确的Starter POM依赖项,或者将MySQL JDBC JAR文件手动添加到类路径中。 如果您有兴趣,可以参阅本教程,以了解有关如何在本教程中使用MySQL数据库将Java应用程序连接到数据库的更多信息。

3)由于缺少Application.properties中的配置

Spring Boot擅长配置内存数据库,例如H2,HSQLDB,Derby等,并且只需将其JAR文件添加到
但对于其他类 ,您需要为Spring Boot提供其他详细信息,例如URL,DriverClass名称等。

您可以通过将一些属性添加到具有spring.datasource前缀的application.properties文件中来实现,如以下示例所示:

spring.datasource.url = jdbc:mysql://localhost/abc

spring.datasource.name=testme

Spring Boot错误

4)排除DataSourceAutoConfiguration

有时排除DataSourceAutoConfigution也可以解决此问题,尤其是在不需要数据库的情况下。 这将防止Spring Boot自动配置数据库,并且不会出现任何错误。 您可以使用Spring Boot的@EnableAutoConfiguration批注的exclude属性来禁用某些类的自动配置,如下所示:

 @Configuration  @EnableAutoConfiguration (exclude={DataSourceAutoConfiguration. class })  public class SpringBootDemo {  public static void main(String[] args) { SpringApplication.runSpringBootDemo. class , args); }   } 

您甚至可以使用带有
@EnableAutoConfiguration如下所示:

 @Configuration  @EnableAutoConfiguration (  exclude = {DataSourceAutoConfiguration. , HibernateJpaAutoConfiguration. class , HibernateJpaAutoConfiguration. class })  public class SpringBootDemo {  public static void main(String[] args) { SpringApplication.runSpringBootDemo. class , args); }   } 

这就是如何解决“无法为数据库类型NONE确定嵌入式数据库驱动程序类”“在类路径资源DataSourceAutoConfiguration中定义名称为'dataSource'的bean创建错误”的问题。 在大多数情况下,这是因为自动配置没有足够的详细信息来配置数据库,但是有时这也是数据库自动配置的偶然触发,可以使用@EnableAutoConfiguration批注的exclude属性来禁用它。

顺便说一句,如果您想深入学习Spring Boot,请参考以下有用的资源:

翻译自: https://www.javacodegeeks.com/2019/05/error-creating-bean-datasource-datasourceautoconfiguration.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332307.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

simulink怎么生成vxworks的执行程序_从EPB模型谈谈Simulink代码生成

前段时间有读者朋友问代码生成的例子,说他正在做EPB的仿真模型,但总是和应用串不到一块去,我这里就从一个简单EPB控制模型来谈谈simulink代码生成,总结代码生成方法的同时也顺便回答他的问题。1.EPB模型准备用来举例说明的模型很简…

通过Socket实现文件上传/上传文件

文章目录整个功能的实现步骤客户端的实现步骤服务端的实现步骤示例代码整个功能的实现步骤 1.客户端使用本地的字节输入流读取被上传的文件数据 2.客户端使用网络字节输出流,将读取到的文件数据发送给服务端 3.服务端使用网络字节输入流读取客户端发送过来的文件数…

构造函数调用默认构造函数_显式无参数构造函数与默认构造函数

构造函数调用默认构造函数大多数不熟悉Java的开发人员都会Swift了解到,如果他们没有指定至少一个显式构造函数,则会为Java类隐式创建一个“ 默认构造函数 ”( 由javac进行创建)。 Java语言规范的 8.8.9节简要指出:“如…

Artifact到底是什么

将项目构建成一个可以在服务器部署的文件包(如:war 包或者 exploded 的文件包),或者构建成的 jar 包(这些 jar 包通常是某些模块程序文件,也可以是某些插件程序文件),这些都叫 Artif…

python win10 桌面_Python3如何实现Win10桌面自动切换

得空写了个自动切换桌面背景图片的小程序。再不写python就要扔键盘了,对vue还有那么一点好感,天天php真是有够烦。准备工作准备个文件夹放在桌面上,平时看到什么高清好图就拽进去。运行脚本脚本如下:#!/usr/bin/pythonimport ctyp…

java中抽象类继承抽象类_用Java中的抽象类扩展抽象类

java中抽象类继承抽象类示例问题 当我创建Java :: Geci抽象类AbstractFieldsGenerator和AbstractFilteredFieldsGenerator我遇到了一个不太复杂的设计问题。 我想强调一下,这个问题和设计对于某些人来说似乎很明显,但是在我最近与一位初级开发人员&#…

pb90代码如何连接sql2008r2_如何使用 HTTP Headers 来保护你的 Web 应用

众所周知,无论是简单的小网页还是复杂的单页应用,Web 应用都是网络攻击的目标。2016 年,这种最主要的攻击模式 —— 攻击 web 应用,造成了大约 40% 的数据泄露。事实上,现在来说,了解网络安全并不是锦上添花…

Servlet配置初始化参数/配置参数

文章目录给某个Servlet配置初始化参数配置全局的参数ServletConfig给某个Servlet配置初始化参数 也可以通过注解的方式来配置初始化参数: 在 Servlet 中获取针对 Servlet 的参数值: String version getInitParameter("version");配置全局的…

poi动态创建文档_POI创建的文档具有不同条件的灵活样式

poi动态创建文档介绍 这篇文章解释了基于各种标准将样式应用于文档的困难并提供了解决方案。 Java编程中的常见任务之一是根据存储在数据库中的数据创建Excel报告。 在这些情况下,Java程序员使用POI :-)。 这些报告通常对样式和数据格式有严格的规定。 数据通常是SQ…

python编码程序_python 编码

网页的编码方式是简体中文gb2312 (查看网页源码,可以看到),而python内部的编码方式为unicode,之前的代码是这样的:contentAll urllib.urlopen(urlLink).read()soup BeautifulSoup.BeautifulSoup(contentAll) #生成BeautifulSou…

比特(bit)_二进制数

二进制数位,也叫比特位,其实就是指位置,是指二进制数的位置。例如,0101 这是二进制数,而且是 4 位的二进制数,因为有 4 个位置,每个位置放一个二进制数,确切的说是每个位置放一个二进…

javax线程池超时结束_没有Javax的Jakarta EE:这次世界也不会结束

javax线程池超时结束如果您错过了新闻, Oracle将向Eclipse基金会捐赠Java EE规范 。 这个决定是在规范过程中进行了相当长时间的Hibernate之后,人们理所当然地怀疑Oracle丧失了对Java EE的战略兴趣。 首先,Java EE和更广泛的Java社区很好地满…

Final Cut Pro X如何去视频水印/视频去水印

先剪辑好视频(比如把不要的段切掉),然后选中视频,把它复制一份到另一个轨道(按住option键,用鼠标左键拖放即可复制)点击右下角的 效果(Effect)→ 模糊(Blur)→ 高斯模糊(Gaussian),把高斯模糊拖入上边那条轨道再次选择效果(Effect…

为什么线程池里的方法会执行两次_面试官问你java都有哪些线程池,自己是否自定义过线程池...

我还记得大学实习面试时,被问到什么是线程池这个问题,因为这个题我被录取了,原因就是我背出来了,而另外一个面试的没背出来,说实话当时还真不知道它是干什么的,就是看面试题给背下来了,在之后就…

java中两任务并行运行_Java并行编程中的“可调用”与“可运行”任务

java中两任务并行运行当我们用Java编写多线程应用程序时,我们倾向于使用“ Runnable ”接口来实现线程类。 您的类必须简单地实现此接口并覆盖run方法。 对于琐碎的用例,我们可以通过调用“ start”方法直接启动线程,结果将控制流委托给run…

Servlet中的监听器

文章目录什么是监听器如何写监听器配置监听器统计在线人数的案例什么是监听器 Servlet 规范当中定义的一种特殊的类,作用是监听容器当中产生的一些事件并进行相应的处理。 容器产生的事件指的是两大类事件: 第一大类 生命周期相关的事件,指…

python调用百度接口实现ocr识别_Python调用百度OCR实现图片文字识别的示例代码

百度AI提供了一天50000次的免费文字识别额度,可以愉快的免费使用!下面直接上方法:首先在百度AI创建一个应用,按照下图创建即可,创建后会获得如下:创建后会获得如下信息:APP_ID ******API_KEY …

selenium 替代品_每个人都在谈论Selenium替代品-明智地选择!

selenium 替代品什么是Selenium? Selenium是一套Web浏览器自动化工具,用于跨多种平台实现浏览器自动化。 尽管Selenium工具具有更多功能,但出于测试原因,它们仍被用来自动化Web应用程序。 Jason Huggins于2004年创建了Selenium&am…

Maven构建Artifact时,不会创建空目录

Maven 构建的 Web 项目中,你在 Web Resource Directories(默认名称是webapp)下创建的空目录,在构建Artifact 时,并不会在构件中也创建该空目录。 下图所示的四个空目录 upload,在构建 Artifact 时都不会创…

通用数据保护条例_欧盟《通用数据保护条例》——2019年的形势

“自欧盟《通用数据保护条例》(GDPR)生效以来,很多公司企业都忙于实行全新的数据保护标准。一个完善的数据保护管理系统比以往任何时候都要重要。我们可以参考一下其他公司在GDPR方面的一些初步经验。”自2018年5月25日GDPR生效以来,它在某些情况下引发了…