Je travaille sur un exemple de Spring Boot Batch avec MongoDB et j'ai déjà démarré le mongod
serveur.
Lorsque je lance mon application, j'obtiens l'erreur ci-dessous.
Des pointeurs 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
avec la sortie suivante:
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
la source
la source
Ajoutez simplement:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
ça marche pour moi.J'obtenais la même erreur avec laquelle j'ai essayé
@EnableAutoConfiguration(exclude=...)
ne fonctionnait pas.la source
Votre problème est la dépendance de spring batch
spring-boot-starter-batch
qui a unespring-boot-starter-jdbc
dépendance transitive maven.Spring Batch est un framework permettant de créer des jobs batch d'entreprise fiables et tolérants aux pannes. Il prend en charge de nombreuses fonctionnalités telles que le redémarrage d'un lot ayant échoué, l'enregistrement de l'état de l'exécution du lot, etc. Pour ce faire, Spring Batch utilise un schéma de base de données pour stocker l'état des travaux enregistrés, la configuration automatique vous fournit déjà la configuration de base de la source de données requise et c'est cette configuration qui 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 comme
mysql
,h2
, etc. pour configurerurl
.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 dirver h2 comme ceci:<?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 motivation, car vous ne pouvez pas utiliser mongo à cette fin, est que l'utilisation de mongo est fournie uniquement pour les lecteurs et les rédacteurs d'articles et non pour la gestion de la base de données interne de Spring Batch qui est un schéma interne, pas un schéma métier. La requête est une simple requête SQL et l'abstraction interne repose sur une base de données relationnelle. Il est nécessaire d'avoir une base de données avec la capacité ACID car chaque lot lit et écrit une partie du travail et enregistre ces informations afin de redémarrer le travail. Une solution NoSql ne convient pas pour cela.
À la fin, vous avez configuré une base de données relationnelle afin de préparer Spring Batch pour la capacité interne, l'abstraction interne ne repose pas uniquement sur mongo sur jdbc. Ensuite, mongo peut être utilisé mais pour le côté commercial du lot via le lecteur / rédacteur d'articles.
J'espère que cela pourra vous aider à dissiper vos doutes.
la source
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
Pas au point de la question (peut être liée bien), mais, si vous bootstrap un nouveau projet et se demandant pourquoi vous obtenez la même erreur, il peut provenir de la
artifactId
despring-boot-starter-data-jpa
la section de dépendance. 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>
la source
mvn clean install
puis de recharger tous les projets Maven d'Intellij pour me débarrasser de l'erreur.À l'exclusion du
DataSourceAutoConfiguration.class
travaillé pour moi:@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
la source
Ce lien a aidé.
Le problème: Spring boot ne dispose pas de toutes les informations nécessaires pour configurer la source de données JPA, c'est-à-dire les propriétés de connexion JDBC. Solutions:
Le lien ci-dessus exclut le
DataSourceAutoConfiguration.class
avec@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
Mais cela n'a pas fonctionné pour moi. Au lieu de cela, j'ai dû exclure 2 classes AutoConfig:
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, XADataSourceAutoConfiguration.class})
la source
AutoConfig
classes.DataSourceAutoConfiguration
travaillé pour moi sur2.2.1.RELEASE
despring-boot-starter-parent
.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. Ensuite, nous avons expliqué comment contourner le problème sans configurer du tout la source de données.
https://www.baeldung.com/spring-boot-failed-to-configure-data-source
la source
Il se peut que votre répertoire de ressources ne soit pas ajouté au classpath lors de la création d'un projet via Spring Initializr. Ainsi, votre application ne charge jamais le fichier application.properties que vous avez configuré.
Pour faire un test rapide si tel est le cas, ajoutez ce qui suit à votre fichier application.properties:
server.port=8081
Maintenant, lors de l'exécution de votre application, vous devriez voir dans la sortie de la console Spring Boot quelque chose comme ceci:
INFO o.s.b.w.e.tomcat.TomcatWebServer - Tomcat started on port(s): **8081** (http) with context path ''
Si votre port est toujours par défaut 8080 et non modifié en 8081, vos fichiers application.properties ne se chargent évidemment pas.
Vous pouvez également vérifier si votre application s'exécute avec à
gradle bootRun
partir de la ligne de commande. Ce qui fonctionnera probablement.Solution:
Voir la réponse officielle du support IntelliJ: IDEA-221673
la source
Pour la version Spring Boot
2.X.X
ci-dessous, la configuration 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
L'ancien pilote jdbc est obsolète. Le nouveau est mentionné sur la configuration ci-dessus. Veuillez utiliser le même et redémarrer le projet.
la source
J'ai eu le même problème résolu en ajoutant
<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
la source
J'ai ajouté cette annotation sur la classe principale de mon application Spring Boot et tout fonctionne parfaitement
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
la source
Cela peut être dû au fait que vous avez des dépendances et des plugins jpa ...
il suffit de le commenter s'il n'est pas utilisé (fichier build.gradle ou pom)
par exemple
// kotlin("plugin.jpa") version "1.3.61" // implementation("org.springframework.boot:spring-boot-starter-data-jpa")
la source
Si vous utilisez Gradle, la reconstruction de Gradle peut résoudre ce problème.
la source
Cela signifie simplement que vous avez téléchargé un code de démarrage Spring avec une dépendance de base de données sans configurer votre base de données. Donc, il ne sait pas comment se connecter. Pour la version Spring Boot,
2.18
suivez les étapes ci-dessous pour le réparer.mysql/mongo
etc.Dans votre
applications.properties
fichier, ajoutez les informations de connexion à la base de données. Un échantillon est donnémysql
si votre base de données estmongo
modifiée pourmongo
.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
la source
Si la source de données est définie dans
application.resources
, assurez-vous qu'elle se trouve juste en dessoussrc/main
et ajoutez-la au chemin de génération.la source
Si vous avez une dépendance JPA dans votre pom.xml, supprimez-la simplement. Cette solution a fonctionné pour moi.
la source
Ajoutez cette annotation dans le fichier java principal
@EnableAutoConfiguration(exclude=DataSourceAutoConfiguration.class)
la source
Cela se produit parce que le @ valerio-vaudi a dit.
Mais vous pouvez le résoudre en définissant la source de données principale avec votre configuration
@Primary @Bean(name = "dataSource") @ConfigurationProperties(prefix = "spring.datasource") public DataSource getDataSource() { return DataSourceBuilder.create().build(); } @Bean public JdbcTemplate jdbcTemplate(DataSource dataSource) { return new JdbcTemplate(dataSource); }
la source
J'ai eu le même problème et j'ai essayé toutes les suggestions ci-dessus, mais cela n'a pas fonctionné. Je publie ma réponse pour les lecteurs futurs. Avant, cela fonctionnait bien, mais il est réapparu. J'ai résolu ce problème en supprimant certains plug-ins et dépendances inutiles de pom.xml
Tout d'abord, j'ai changé le type d'emballage par défaut en jar (Spring Boot Initializer donne pom dans l'emballage)
<packaging>jar</packaging>
J'ai ajouté involontairement des plugins:
<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>
J'espère que ma réponse aidera quelqu'un.
la source
Celui-ci a fonctionné pour moi, pour MySQL: (Propriétés de l'application)
spring.datasource.url=jdbc:mysql://localhost:3306/db?useSSL=false&useUnicode=true&useJDBCCompliantTimezoneShift=true& useLegacyDatetimeCode=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=admin spring.jpa.hibernate.ddl-auto=create spring.jpa.show-sql=true
la source
J'ai supprimé une dépendance obsolète sur mybatis dans le pom.xml pour faire fonctionner le mien.
la source
Si vous avez ajouté la dépendance "spring-boot-starter-data-jpa" dans pom.xml, veuillez ajouter la base de données respective dans la dépendance comme h2 et etc.
la source
Je rencontre la même erreur lors du démarrage d'un nouveau projet. Utiliser la ligne de commande fonctionne pour moi.
la source
Je pense que lors de l'importation de modules, vous avez importé un autre package, allez dans les modules et supprimez-en tous. Après cela, importez les modules du package du projet
la source
Pour moi, le dossier de ressources était exclu lors d'une mise à jour / build maven. Je suis allé à Build Path> Source et j'ai trouvé que src / main / resources avait "Excluded **". J'ai supprimé cette entrée (cliqué sur Exclus **> Supprimer> Appliquer et fermer).
Ensuite, cela a bien fonctionné.
la source
L'ajout d'une dépendance h2 au fichier pom peut résoudre ces problèmes. ...... com.h2database h2 ......
la source
Dans mon cas
spring.profiles = production // remove it to fix
dans application.properties était la raison
la source
production
profil, donc l'activation de ce profil aurait également résolu votre problème. le problème ici est unespring.datasource
configuration manquante dans la configuration active