Je travaille sur l'exemple Spring Boot Batch avec MongoDB et j'ai déjà démarré le serveur Mongod
Lorsque je lance mon application, j'obtiens l'erreur ci-dessous.
Des indicateurs pour ce problème?
***************************
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>
J'ai commencé Mongod
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)
votre problème est la dépendance du lot printanier spring-boot-starter-batch
qui a une dépendance printitive-boot-starter-jdbc transitive maven.
Spring Batch est un cadre permettant de créer des lots d'entreprise fiables et à tolérance de pannes. Il prend en charge de nombreuses fonctionnalités telles que les tentatives de redémarrage d'un lot en échec, le statut d'enregistrement de l'exécution du lot, etc. Afin de réaliser ce lot de printemps, utilisez un schéma de base de données pour stocker le statut des travaux enregistrés. La configuration automatique vous fournit déjà la configuration de base de la source de données requise. Cette configuration nécessite la configuration de la base de données relationnelle.
Pour résoudre ce problème, vous devez inclure un pilote de base de données tel que mysql, h2, etc., et configurer l’url.
Mise à jour Juste pour commencer, vous pouvez configurer votre application.yml comme ci-dessous:
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:localhost;DB_CLOSE_ON_EXIT=FALSE
username: admin
password:
et bien sûr, dans votre pom.xml, incluez le répertoire h2
<?xml version="1.0" encoding="UTF-8"?>
<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.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.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>
</properties>
<dependencies>
....
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
....
</dependencies>
...
</project>
La raison pour laquelle vous ne pouvez pas utiliser mongo pour cette option est que l'utilisation de mongo est uniquement fournie pour la lecture/l'écriture d'éléments et non pour la gestion de la base de données interne du lot de printemps qui est un schéma interne et non un schéma métier. Les requêtes sont des requêtes SQL simples et l'abstraction interne repose sur une base de données relationnelle. Il est nécessaire d’avoir une base de données avec une capacité ACID car chaque lot lit et écrit un bloc de travail et enregistre des informations afin de relancer le travail, un NoSql n’est pas adapté à cette tâche.
A la fin, vous avez configuré une base de données de relations afin de préparer le lot de ressort pour la capacité interne. L'abstraction interne ne relaie pas sur Mongo uniquement sur jdbc. Ensuite, mongo peut être utilisé mais pour le côté commercial du lot via un lecteur/graveur d’items.
J'espère que cette réflexion pourra vous aider à dissiper vos doutes.
vérifiez votre application.properties
en changeant
spring.datasource.driverClassName=com.mysql.jdbc.Driver
à
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
a travaillé pour moi. Configuration complète:
spring.datasource.url=jdbc:mysql://localhost:3306/db
spring.datasource.username=
spring.datasource.password=
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
Pas au point de la question (peut être lié cependant), mais, si vous bootstrap un nouveau projet et vous demandez pourquoi obtenez-vous la même erreur, elle peut provenir de la artifactId
de spring-boot-starter-data-jpa
dans la section des dépendances. J'ai donné la dépendance ci-dessous. Vous devrez définir la base de données pour vous en débarrasser.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Erreur "Impossible de configurer une source de données". Tout d'abord, nous avons résolu le problème en définissant la source de données. Nous avons ensuite expliqué comment résoudre le problème sans configurer la source de données.
https://www.baeldung.com/spring-boot-failed-to-configure-data-source
Pour la version de démarrage printanière 2.X.X
la configuration ci-dessous a fonctionné pour moi.
spring.datasource.url=jdbc:mysql://localhost:3306/rest
spring.datasource.username=
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.database-platform = org.hibernate.dialect.MySQL5Dialect
spring.jpa.generate-ddl=true
spring.jpa.hibernate.ddl-auto = update
Ancien pilote jdbc est obsolète. Le nouveau est mentionné dans la configuration ci-dessus. S'il vous plaît utilisez le même et redémarrez le projet.
J'ai eu le même problème résolu par add <scope>provided</scope>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<scope>provided</scope>
</dependency>
Source: https://github.com/spring-projects/spring-boot/issues/13796#issuecomment-413313346