it-swarm.com.ru

Не удалось автоматически настроить источник данных: 'spring.datasource.url'

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

Мой проект использует MySQL + JavaFX + Spring Boot + Spring Data JPA + Hibernate фреймворки/технологии.

Это мой файл POM.

<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nubeclick</groupId>
<artifactId>pos</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>POSNubeClick</name>
<description>Sistema de punto de venta (Point Of Sale).</description>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <Java.version>1.8</Java.version>
    <slf4j.version>1.7.12</slf4j.version>
    <log4j.version>1.2.17</log4j.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
    <dependency>
        <groupId>com.miglayout</groupId>
        <artifactId>miglayout-javafx</artifactId>
        <version>5.0</version>
    </dependency>
    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>
    <!-- <dependency> -->
    <!-- <groupId>org.slf4j</groupId> -->
    <!-- <artifactId>slf4j-api</artifactId> -->
    <!-- <version>${slf4j.version}</version> -->
    <!-- </dependency> -->
    <!-- <dependency> -->
    <!-- <groupId>org.slf4j</groupId> -->
    <!-- <artifactId>jcl-over-slf4j</artifactId> -->
    <!-- <version>${slf4j.version}</version> -->
    <!-- </dependency> -->
    <!-- <dependency> -->
    <!-- <groupId>org.slf4j</groupId> -->
    <!-- <artifactId>slf4j-log4j12</artifactId> -->
    <!-- <version>${slf4j.version}</version> -->
    <!-- </dependency> -->
    <!-- <dependency> -->
    <!-- <groupId>log4j</groupId> -->
    <!-- <artifactId>log4j</artifactId> -->
    <!-- <version>${log4j.version}</version> -->
    <!-- </dependency> -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-Java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>com.jfoenix</groupId>
        <artifactId>jfoenix</artifactId>
        <version>1.10.0</version>
    </dependency>
    <dependency>
        <groupId>de.jensd</groupId>
        <artifactId>fontawesomefx</artifactId>
        <version>8.9</version>
    </dependency>
    <dependency>
        <groupId>org.controlsfx</groupId>
        <artifactId>controlsfx</artifactId>
        <version>8.40.13</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

Это моя конфигурация .properties.

spring.main.banner-mode=off

# Datasource connection properties
spring.datasource.url=jdbc:mysql://localhost/posnubeclick
spring.datasource.username=nubeclick
spring.datasource.password=nubeclick
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# JPA Properties
spring.jpa.database=posnubeclick

# Hibernate Configuration Properties
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.jpa.properties.hibernate.current_session_context_class=thread
spring.jpa.properties.hibernate.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

# Naming strategy
spring.jpa.hibernate.naming-strategy =org.hibernate.cfg.ImprovedNamingStrategy

#Turn Statistics on
spring.jpa.properties.hibernate.generate_statistics=true

# logging
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n
logging.level.org.hibernate.stat=debug
logging.level.org.hibernate.type=trace
logging.level.org.hibernate.SQL=debug
#logging.level.org.hibernate.type.descriptor.sql=trace
logging.level.=error

Это мой основной класс

@SpringBootApplication(scanBasePackages = { "com.nubeclick.pos" })
public class MainApp extends Application {

private static final Logger log = LoggerFactory.getLogger(MainApp.class);

public static void main(String[] args) throws Exception {

    SpringApplication.run(MainApp.class, args);
    // launch(args);
}

@Override
public void start(Stage stage) throws Exception {
    try {
        log.info("Starting Hello JavaFX and Maven demonstration application");

        String fxmlFile = "/fxml/Main.fxml";
        log.debug("Loading FXML for main view from: {}", fxmlFile);
        FXMLLoader loader = new FXMLLoader();
    Parent rootNode = (Parent) loader.load(getClass().getResourceAsStream(fxmlFile));

        log.debug("Showing JFX scene");
        Scene scene = new Scene(rootNode);
        scene.getStylesheets().add("/styles/styles.css");
        stage.setTitle("NubeClick - Point of Sales");
        stage.setScene(scene);
        stage.show();
    } catch (Exception e) {
    // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Это трассировка стека: 

Возникла исключительная ситуация во время инициализации контекста - отмена попытки обновления: org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка создания бина с именем 'org.springframework.boot.auotconfigure.orm.jpa.HibernateJpaConfiguration': неудовлетворительная зависимость, выраженная через параметр конструктора 0; вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем 'dataSource', определенным в ресурсе пути к классу [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration $ Hikari.class]: сбой создания экземпляра компонента с помощью метода фабрики ; вложенным исключением является org.springframework.beans.BeanInstantiationException: не удалось создать экземпляр [com.zaxxer.hikari.HikariDataSource]: фабричный метод 'dataSource' вызвал исключение; вложенным исключением является org.springframework.boot.autoconfigure.jdbc.DataSourceProperties $ DataSourceBeanCreationException: не удалось определить подходящий класс драйвера

Весеннее сообщение таково: 

Описание:

Не удалось автоматически настроить источник данных: «spring.datasource.url» не указан, и ни один встроенный источник данных не может быть настроен автоматически.

Причина: не удалось определить подходящий класс драйвера

Действие:

Примите во внимание следующее: Если вы хотите встроенную базу данных (H2, HSQL или Derby), поместите ее в путь к классам.

Если у вас есть настройки базы данных для загрузки из определенного профиля, вам может потребоваться активировать его (в настоящее время профили не активны).

Я ссылался на этот другой пост и этот другой пост

Я не знаю, что еще делать, возможно, начать все заново с нуля, но я хочу адаптировать эти фреймворки к моему текущему проекту.

Что я могу сделать, чтобы решить это?

Правка


Сумасшедшая вещь, я решил загрузить проект в другой репозиторий, полностью очистил папку проекта (удалил .project, .settings, .classpath, bin, target) и заново импортировал проект в Eclipse, настроил -> добавил maven nature, и теперь ошибка исчезла, по крайней мере, эта ошибка, есть некоторые другие ошибки, но теперь он загружает все из файла свойств, поэтому, почему это произошло?

5
Adrian Flores

Я решил загрузить проект в другой репозиторий, полностью очистил папку проекта (удалил .project, .settings, .classpath, bin, target) и заново импортировал проект в Eclipse, настроил -> добавил maven nature, и теперь ошибка исчезла, по крайней мере, эта ошибка, есть некоторые другие ошибки, но теперь она загружает все из файла свойств, поэтому, почему это произошло?

0
Adrian Flores

Может быть, Spring Boot вообще не находит ваш файл application.properties. Убедитесь, что этот файл находится в корневом каталоге папки resources (в типичной конфигурации проекта Maven он должен находиться в корневом каталоге папки src/main/resources). 

Я предлагаю вам включить уровень ведения журнала DEBUG, чтобы проверить, читает ли Spring Boot правильный файл application.properties.

4
Riccardo Righi

Это то, что я бы сделал, если бы мы сидели рядом, закомментировав пару строк:

# Datasource connection properties
spring.datasource.url=jdbc:mysql://localhost/posnubeclick
spring.datasource.username=nubeclick
spring.datasource.password=nubeclick
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# JPA Properties
#spring.jpa.database=posnubeclick

Также ваш файл .properties называется application.properties OR bootstrap.properties?

0
DaShaun

Убедитесь, что у вас есть зависимость mysql в вашем файле pom.xml или build.gradle:

compile 'mysql:mysql-connector-Java'

или же

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-Java</artifactId>
</dependency>

Затем вы можете закомментировать ваше свойство driver-class-name, потому что весенняя загрузка автоматически настроит его для вас.

Еще одна вещь: кажется, что вы должны подключиться к конкретному порту MySQL (по умолчанию это 3306), поэтому убедитесь, что он выглядит примерно так:

spring.datasource.url=jdbc:mysql://localhost:3306/posnubeclick
0
mkuligowski