Рубрики
Без рубрики

Разрешение ошибки “Не удалось настроить DataSource”

Узнайте, что вызывает ошибку Spring Boot “Не удалось настроить DataSource” и как ее устранить

Автор оригинала: baeldung.

1. Обзор

В этом коротком учебнике мы обсудим что вызывает и что решает Ошибка “Не удалось настроить DataSource” о проекте «Весенняя загрузка».

Мы решим проблему с помощью двух разных подходов:

  1. Определение источника данных
  2. Отключение автоматической конфигурации источника данных

2. Проблема

Теперь предположим, что у нас есть проект Spring Boot, и мы добавили весна-данные-стартер-jpa зависимость и Водитель MyS’L JDBC к нашему пом.xml :


    org.springframework.boot
    spring-boot-starter-data-jpa


    mysql
    mysql-connector-java
    runtime

Но, когда мы запускаем приложение, оно не удается с ошибкой:

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded 
  datasource could be configured.

Reason: Failed to determine a suitable driver class

Давайте посмотрим, почему это происходит.

3. Причина

По замыслу, автоматическая конфигурация Spring Boot пытается настроить бобы автоматически на основе зависимостей, добавленных в класс.

И, поскольку у нас есть зависимость JPA от нашего classpath, Spring Boot пытается автоматически настроить систему JPA ДанныеИсточник . Проблема в том, мы не дали Spring информацию, необходимой для выполнения автоматической конфигурации .

Например, мы не определили свойства соединения JDBC, и нам нужно будет сделать это при работе с внешними базами данных, такими как MyS’L и MSS’L. С другой стороны, мы не будем сталкиваться с этой проблемой с базами данных памяти, как H2, поскольку они могут создать источник данных без всей этой информации.

4. Решения

4.1. Определить DataSource с использованием свойств

Поскольку проблема возникает из-за отсутствия подключения к базе данных, мы можем решить проблему, просто предоставив свойства источника данных.

Во-первых, давайте определим свойства источника данных в файле application.properties нашего проекта:

spring.datasource.url=jdbc:mysql://localhost:3306/myDb
spring.datasource.username=user1
spring.datasource.password=pass
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

Или мы можем предоставить свойства источника данных в application.yml :

spring:
  datasource:
    driverClassName: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/myDb
    username: user1
    password: pass

4.2. Определить программу DataSource

Кроме того, мы можем определить наш источник данных , по использование утилиты строитель класса DataSourceBuilder . Для создания нашего источника данных нам необходимо предоставить URL-адрес базы данных, имя пользователя, пароль и информацию о драйвере S’L:

@Configuration
public class DatasourceConfig {
    @Bean
    public DataSource datasource() {
        return DataSourceBuilder.create()
          .driverClassName("com.mysql.cj.jdbc.Driver")
          .url("jdbc:mysql://localhost:3306/myDb")
          .username("user1")
          .password("pass")
          .build();	
    }
}

Короче говоря, мы можем использовать любой из вышеперечисленных вариантов для настройки источника данных в соответствии с нашими требованиями.

4.3. Исключить DataSourceAutoConfiguration

В предыдущем разделе мы исправили проблему, добавив свойства источника данных в наш проект. Но, как мы можем решить эту проблему, если мы еще не готовы определить наш источник данных?

Давайте посмотрим, как предотвратить автоматическую настройку источника данных в Spring Boot .

Классная DataSourceAutoКонфигурация является базовым классом для настройки источника данных с помощью spring.datasource.» свойства.

Теперь, Есть несколько способов, которые мы можем исключить это из автоматической конфигурации .

Во-первых, мы отключить автоматическую конфигурацию с помощью spring.autoconfigure.exclude имущественные в нашем application.properts файл:

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

Аналогичным образом, мы можем сделать то же самое, используя наши application.yml файл:

spring:
  autoconfigure:
    exclude:
    - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

Или мы можем использовать исключить атрибут на нашем @SpringBootApplication или @EnableAutoConfiguration аннотация :

@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})

Во всех вышеперечисленных примерах мы отключил автоматическую конфигурацию ДанныеИсточник . И это не повлияет на автоматическую настройку любых других бобов.

Таким образом, подводя итог, мы можем использовать любой из вышеперечисленных методов, чтобы отключить автоматическую конфигурацию источника данных Spring Boot.

В идеале мы должны предоставлять информацию об источниках данных и использовать опцию исключения только для тестирования.

5. Заключение

В этой статье мы видели, что вызывает “Не удалось настроить DataSource” ошибка. Во-первых, мы исправили проблему, определив источник данных. Далее мы обсудили, как обойти проблему без настройки источника данных вообще.

Как всегда, полный код, используемый в этой статье, доступен GitHub .