Здравствуйте, ребята, если вы используете Spring Boot и получаете ошибки типа «Не удается определить класс встроенного драйвера базы данных для типа базы данных NONE» или «Ошибка при создании bean-компонента с именем« dataSource », определенным в ресурсе пути к классу ataSourceAutoConfiguration», то вы попали вправо место. В этой статье мы рассмотрим различные сценарии возникновения ошибки Spring Boot и способы их устранения. Основной причиной этой ошибки является автоконфигурация Spring Boot, которая пытается автоматически настроить источник данных для вас, но не имеет достаточно информации. Он автоматически пытается создать экземпляр bean-компонента DataSourceAutoConfiguration
и он не работает.
Как и другие ошибки Spring Framework, трассировка стека выглядит довольно грязно, что они могли бы улучшить с помощью 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-starter-data-jpa
который затем включал hibernate-entitymanager.jar
и у них не было дополнительных вещей, которые нужно было бы настроить.
Иногда включение неправильного Starter POM также может решить эту проблему, например, добавление spring-boot-starter-jdbc
вместо зависимости spring-boot-starter-data-jpa
.
Если вы знаете, автоконфигурация Spring Boot запускается зависимостями JAR, присутствующими в пути к классам, и если он извлекает что-то, что вам не нужно, то может появиться этот тип ошибки.
2) Из-за отсутствия зависимости
Иногда вам нужна база данных, но вы забыли включить
JAR-файл драйвера в classpath, который также может вызвать эту ошибку. Например, вы указали следующие свойства в файле application.properties
, весеннем загрузочном конфигурационном файле, но не включили соответствующий драйвер MySQL JDBC в classpath
spring.datasource.url = jdbc:mysql://localhost/test
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
Чтобы устранить эту ошибку, необходимо либо включить правильную зависимость POM Starter, либо вручную добавить JAR-файл MySQL JDBC в путь к классам. Если вам интересно, вы можете посмотреть этот учебник, чтобы узнать больше о том, как подключить приложение Java к базе данных с помощью базы данных MySQL в этом учебнике.
3) Из-за отсутствия конфигурации в Application.properties
Spring Boot хорош в настройке баз данных в памяти, таких как H2, HSQLDB, Derby и т. Д., И может настраивать их, просто добавляя их файлы JAR в
classpath, но для других вам нужно предоставить Spring Boot дополнительную информацию, такую как URL, имя DriverClass и т. д.
Это можно сделать, добавив некоторые свойства в файл application.properties с префиксом spring.datasource
, как показано в следующем примере:
spring.datasource.url = jdbc:mysql://localhost/abc
spring.datasource.name=testme
spring.datasource.username=xxxx
spring.datasource.password=xxxx
spring.datasource.driver-class-name= com.mysql.jdbc.Driver spring.jpa.database=mysql
spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect
4) Исключить DataSourceAutoConfiguration
Иногда исключение DataSourceAutoConfigution
также может решить эту проблему, особенно если вам не нужна база данных. Это предотвратит автоматическое конфигурирование базы данных Spring Boot, и ошибки не будет. Вы можете отключить автоматическую настройку для определенных классов, используя атрибут exclude аннотации @EnableAutoConfiguration Spring Boot, как показано ниже:
1
2
3
4
5
6
7
8
9
|
@Configuration @EnableAutoConfiguration (exclude={DataSourceAutoConfiguration. class }) public class SpringBootDemo { public static void main(String[] args) { SpringApplication.runSpringBootDemo. class , args); } } |
Вы даже можете исключить более одного класса, используя атрибут exclude с
@EnableAutoConfiguration, как показано ниже:
01
02
03
04
05
06
07
08
09
10
|
@Configuration @EnableAutoConfiguration ( exclude = {DataSourceAutoConfiguration. class , HibernateJpaAutoConfiguration. class }) public class SpringBootDemo { public static void main(String[] args) { SpringApplication.runSpringBootDemo. class , args); } } |
Это все о том, как решить проблему «Не удается определить класс встроенного драйвера базы данных для типа базы данных NONE» или «Ошибка создания компонента с именем« dataSource », определенным в ресурсе пути к классу DataSourceAutoConfiguration» . В большинстве случаев это происходит из-за того, что автоконфигурация не имеет достаточно деталей, необходимых для настройки базы данных, но иногда это также случайный триггер автоконфигурирования базы данных, который можно отключить с помощью атрибута @EnableAutoConfiguration
аннотации @EnableAutoConfiguration
.
Кстати, если вы хотите подробно изучить Spring Boot, вот несколько полезных ресурсов для вашего обучения:
См. Оригинальную статью здесь: Spring Boot Error — Ошибка при создании bean-компонента с именем «dataSource», определенным в ресурсе пути к классу DataSourceAutoConfiguration Мнения, высказанные участниками Java Code Geeks, являются их собственными. |