Ich arbeite an einem Spring Boot Batch- Beispiel mit MongoDB und habe den mongod
Server bereits gestartet .
Wenn ich meine Anwendung starte, wird der folgende Fehler angezeigt.
Irgendwelche Hinweise für dieses Problem?
***************************
APPLICATION FAILED TO START
***************************
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
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).
application.properties:
# Mongo database URI. Cannot be set with host, port and credentials.
spring.data.mongodb.uri=mongodb://localhost/test
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Ich habe mongod
mit folgender Ausgabe begonnen:
C:\Users\pc>mongod
2018-07-07T14:39:39.223+0530 I JOURNAL [initandlisten] journal dir=C:\data\db\journal
2018-07-07T14:39:39.230+0530 I JOURNAL [initandlisten] recover : no journal files present, no recovery needed
2018-07-07T14:39:39.478+0530 I JOURNAL [durability] Durability thread started
2018-07-07T14:39:39.589+0530 I CONTROL [initandlisten] MongoDB starting : pid=11992 port=27017 dbpath=C:\data\db\ 64-bit host=DESKTOP-NQ639DU
2018-07-07T14:39:39.589+0530 I CONTROL [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2018-07-07T14:39:39.591+0530 I CONTROL [initandlisten] db version v3.0.5
2018-07-07T14:39:39.592+0530 I CONTROL [initandlisten] git version: 8bc4ae20708dbb493cb09338d9e7be6698e4a3a3
2018-07-07T14:39:39.592+0530 I CONTROL [initandlisten] build info: windows sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1') BOOST_LIB_VERSION=1_49
2018-07-07T14:39:39.592+0530 I CONTROL [initandlisten] allocator: tcmalloc
2018-07-07T14:39:39.593+0530 I CONTROL [initandlisten] options: {}
2018-07-07T14:39:39.595+0530 I JOURNAL [journal writer] Journal writer thread started
2018-07-07T14:39:40.485+0530 I NETWORK [initandlisten] waiting for connections on port 27017
2018-07-07T14:40:39.140+0530 I NETWORK [initandlisten] connection accepted from 127.0.0.1:51340 #1 (1 connection now open)
2018-07-07T14:40:41.663+0530 I NETWORK [conn1] end connection 127.0.0.1:51340 (0 connections now open)
2018-07-07T14:45:12.421+0530 I NETWORK [initandlisten] connection accepted from 127.0.0.1:51578 #2 (1 connection now open)
2018-07-07T14:45:12.870+0530 I NETWORK [conn2] end connection 127.0.0.1:51578 (0 connections now open)
2018-07-07T14:46:21.734+0530 I NETWORK [initandlisten] connection accepted from 127.0.0.1:51591 #3 (1 connection now open)
2018-07-07T14:46:22.041+0530 I NETWORK [conn3] end connection 127.0.0.1:51591 (0 connections now open)
2018-07-07T14:57:47.523+0530 I NETWORK [initandlisten] connection accepted from 127.0.0.1:52534 #4 (1 connection now open)
2018-07-07T14:57:47.910+0530 I NETWORK [conn4] end connection 127.0.0.1:52534 (0 connections now open)
spring
spring-boot
spring-batch
Jeff Cook
quelle
quelle
Füge einfach hinzu:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
funktioniert für mich.Ich habe den gleichen Fehler erhalten, mit dem ich versucht
@EnableAutoConfiguration(exclude=...)
habe, hat nicht funktioniert.quelle
Ihr Problem ist die Abhängigkeit von Spring Batch
spring-boot-starter-batch
, die einespring-boot-starter-jdbc
transitive Maven-Abhängigkeit aufweist.Spring Batch ist ein Framework zum Erstellen zuverlässiger und fehlertoleranter Enterprise-Batch-Jobs. Es unterstützt viele Funktionen wie das Neustarten eines fehlgeschlagenen Stapels, das Aufzeichnen des Status der Stapelausführung usw. Um dies zu erreichen, verwendet Spring Batch ein Datenbankschema, um den Status der registrierten Jobs zu speichern. Die automatische Konfiguration bietet Ihnen bereits die Grundkonfiguration der erforderlichen Datenquelle. Für diese Konfiguration ist die relationale Datenbankkonfiguration erforderlich.
Um dies zu lösen , müssen Sie einige Datenbanktreiber umfassen wie
mysql
,h2
etc. die konfigurierenurl
.Update : Nur für den Einstieg können Sie Ihre application.yml wie folgt konfigurieren:
und natürlich in deinem
pom.xml
Include das h2 dirver wie folgt:Die Motivation, da Sie Mongo nicht für diesen Zweck verwenden können, besteht darin, dass die Verwendung von Mongo nur für Artikelleser und -schreiber bereitgestellt wird und nicht für die Verwaltung der internen Datenbank von Spring Batch, bei der es sich um ein internes Schema und nicht um ein Geschäftsschema handelt. Die Abfrage ist eine einfache SQL-Abfrage und die interne Abstraktion basiert auf einer relationalen Datenbank. Es ist eine Datenbank mit ACID-Fähigkeit erforderlich, da jeder Stapel einen Teil der Arbeit liest und schreibt und diese Informationen speichert, um den Job neu zu starten. Eine NoSql-Lösung ist dafür nicht geeignet.
Am Ende haben Sie eine relationale Datenbank konfiguriert, um Spring Batch für interne Funktionen vorzubereiten. Die interne Abstraktion basiert nicht nur auf mongo, sondern auch auf jdbc. Dann kann Mongo aber für die geschäftliche Seite der Charge über Item Reader / Writer verwendet werden.
Ich hoffe, dass dies Ihnen helfen kann, Ihre Zweifel auszuräumen.
quelle
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
Nicht auf den Punkt der Frage (kann allerdings in Beziehung gesetzt werden), aber, wenn Sie ein neues Projekt Bootstrap und fragen sich, warum Sie den gleichen Fehler machen, es von der kommen kann
artifactId
vonspring-boot-starter-data-jpa
in dem Abhängigkeitsabschnitt. Ich habe die Abhängigkeit unten angegeben. Sie müssen die Datenbank definieren, um dies zu beseitigen.quelle
Ausgenommen die
DataSourceAutoConfiguration.class
für mich bearbeiteten:quelle
Dieser Link hat geholfen.
Das Problem: Spring Boot verfügt nicht über alle Informationen, die zum Konfigurieren der JPA-Datenquelle, dh der JDBC-Verbindungseigenschaften, erforderlich sind. Lösungen:
Der obige Link schließt das
DataSourceAutoConfiguration.class
mit ausAber das hat bei mir nicht funktioniert. Ich musste stattdessen 2 AutoConfig-Klassen ausschließen:
quelle
AutoConfig
Klassen zu erläutern .DataSourceAutoConfiguration
für mich gearbeitet2.2.1.RELEASE
vonspring-boot-starter-parent
.Fehler "Fehler beim Konfigurieren einer DataSource". Zuerst haben wir das Problem behoben, indem wir die Datenquelle definiert haben. Als Nächstes haben wir erläutert, wie Sie das Problem umgehen können, ohne die Datenquelle überhaupt zu konfigurieren.
https://www.baeldung.com/spring-boot-failed-to-configure-data-source
quelle
Es kann sein, dass Ihr Ressourcenverzeichnis beim Erstellen eines Projekts über Spring Initializr nicht zum Klassenpfad hinzugefügt wird. Ihre Anwendung lädt also niemals die von Ihnen konfigurierte Datei application.properties.
Fügen Sie Ihrer Datei application.properties Folgendes hinzu, um einen schnellen Test durchzuführen, wenn dies der Fall ist:
Wenn Sie nun Ihre Anwendung ausführen, sollten Sie in der Ausgabe der Spring Boot Console Folgendes sehen:
Wenn Ihr Port immer noch Standard 8080 ist und nicht in 8081 geändert wurde, werden Ihre application.properties-Dateien offensichtlich nicht geladen.
Sie können auch über die
gradle bootRun
Befehlszeile überprüfen, ob Ihre Anwendung ausgeführt wird. Welches wird höchstwahrscheinlich Arbeit sein.Lösung:
Siehe offizielle Antwort des IntelliJ-Supports: IDEA-221673
quelle
Für Spring Boot Version
2.X.X
unten Konfiguration hat bei mir funktioniert.Der alte JDBC-Treiber ist veraltet. Die neue ist in der obigen Konfiguration erwähnt. Bitte verwenden Sie das gleiche und starten Sie das Projekt neu.
quelle
Ich hatte das gleiche Problem durch Hinzufügen gelöst
<scope>provided</scope>
Quelle: https://github.com/spring-projects/spring-boot/issues/13796#issuecomment-413313346
quelle
Ich habe diese Anmerkung zur Hauptklasse meiner Spring Boot-Anwendung hinzugefügt und alles funktioniert perfekt
quelle
Es kann sein, dass Sie jpa-Abhängigkeiten und Plugins haben ...
Kommentieren Sie es einfach, wenn Sie es nicht verwenden (build.gradle oder pom file)
z.B
quelle
Es bedeutet einfach, dass Sie einen Spring Starter Code mit Datenbankabhängigkeit heruntergeladen haben, ohne Ihre Datenbank zu konfigurieren. Es weiß also nicht, wie es sich verbinden soll.
2.18
Führen Sie für die Spring-Boot-Version die folgenden Schritte aus, um das Problem zu beheben.mysql/mongo
.Fügen Sie in Ihrer
applications.properties
Datei die Datenbankverbindungsinformationen hinzu. Beispiel wird gegeben,mysql
wenn Ihre Datenbankmongo
es für ändertmongo
.spring.datasource.url=jdbc:mysql://localhost:3306/db_name_that_you_created spring.datasource.username=your_db_username_here spring.datasource.password=your_db_pass_here spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.database-platform = org.hibernate.dialect.MySQL5Dialect spring.jpa.generate-ddl=true spring.jpa.hibernate.ddl-auto = update
quelle
Wenn die Datenquelle in definiert ist
application.resources
, stellen Sie sicher, dass sie sich direkt unter befindet,src/main
und fügen Sie sie dem Erstellungspfad hinzu.quelle
Wenn Sie Gradle verwenden, kann die Neuerstellung von Gradle dieses Problem lösen.
quelle
Wenn Ihre pom.xml eine JPA-Abhängigkeit enthält, entfernen Sie diese einfach. Diese Lösung hat bei mir funktioniert.
quelle
Es passiert, weil das @ valerio-vaudi sagte.
Sie können es jedoch auflösen und die primäre Datenquelle mit Ihrer Konfiguration festlegen
quelle
Ich hatte das gleiche Problem und habe alle oben genannten Vorschläge ausprobiert, aber es hat nicht geklappt. Ich poste meine Antwort für zukünftige Leser. Vorher hat es gut funktioniert, aber irgendwie ist es wieder aufgetaucht. Ich habe dieses Problem behoben, indem ich einige unnötige Plugnins und Abhängigkeiten aus pom.xml entfernt habe
Zunächst habe ich den Standardverpackungstyp in jar geändert (Spring Boot Initializer gibt pom in der Verpackung an).
<packaging>jar</packaging>
Ich habe unbeabsichtigt einige Plugins hinzugefügt:
<plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <attachClasses>true</attachClasses> <webXml>target/web.xml</webXml> <webResources> <resource> <directory>src/main/webapp</directory> <filtering>true</filtering> </resource> </webResources> </configuration> </plugin>
Ich hoffe meine Antwort wird jemandem helfen.
quelle
Dieser hat bei mir für MySQL funktioniert: (Anwendungseigenschaften)
quelle
Ich habe eine veraltete Abhängigkeit von mybatis in der Datei pom.xml entfernt, um meine zum Laufen zu bringen.
quelle
Fügen Sie diese Anmerkung in die Java-Hauptdatei ein
quelle
Wenn Sie in pom.xml die Abhängigkeit "spring-boot-startup-data-jpa" hinzugefügt haben, fügen Sie bitte die entsprechende Datenbank in Abhängigkeit wie h2 usw. hinzu.
quelle
Für mich wurde der Ressourcenordner bei einem Maven-Update / Build ausgeschlossen. Ich ging zu Build Path> Source und stellte fest, dass src / main / resources "Excluded **" hat. Ich habe diesen Eintrag entfernt (Klicken Sie auf Ausgeschlossen **> Entfernen> Übernehmen und schließen).
Dann hat es gut funktioniert.
quelle
Ich denke, wenn Sie Module importieren, haben Sie ein anderes Paket importiert. Gehen Sie zu Modulen und entfernen Sie alle. Danach importieren Sie Module aus dem Paket des Projekts
quelle
Durch Hinzufügen einer h2-Abhängigkeit zur pom-Datei können solche Probleme behoben werden. ...... com.h2database h2 ......
quelle
In meinem Fall
in application.properties war der Grund
quelle
production
Profil beschränkt, sodass die Aktivierung dieses Profils auch Ihr Problem gelöst hätte. Das Problem hier ist eine fehlendespring.datasource
Konfiguration in der aktiven Konfiguration