2017-03-25 1 views
1

Je je suis nouveau au printemps avec MongoDB Boot.And i ont MongoDB URI ATLAS Chaîne de connexionConnexion MongoDB Atlas de démarrage Spring

mongodb://userName:<PASSWORD>@icarat-shard-00-00-7lopx.mongodb.net:27017,icarat-shard-00-01-7lopx.mongodb.net:27017,icarat-shard-00-02-7lopx.mongodb.net:27017/<DATABASE>?ssl=true&replicaSet=icarat-shard-0&authSource=admin 

Puis dans ma demande de démarrage Spring i mis uri application.properties comme

spring.data.mongodb.uri: mongodb://userName:*****@icarat-shard-00-00-7lopx.mongodb.net:27017,icarat-shard-00-01-7lopx.mongodb.net:27017,icarat-shard-00-02-7lopx.mongodb.net:27017/vehicleplatform?ssl=true&replicaSet=icarat-shard-0&authSource=admin 

Ce dépôt intefface

public interface OrganizationRepository extends MongoRepository<Organization, String> { 

} 

quand j'Injecter OrganizationRepository interface Son erreur d'affichage comme ceci

Impossible d'instancier [com.mongodb.MongoClient]: méthode d'usine 'mongo' a levé l'exception; Exception imbriquée est java.lang.IllegalArgumentException: La chaîne de connexion contient des informations utilisateur non valides. Si le nom d'utilisateur ou mot de passe contient deux points (:) ou un arobase (@) il doit être urlencoded

Et cette ma classe de document

@Document(collection="Organization") 
public class Organization { 

    @Id 
    String id; 

    String orgName; 

    String orgAddress; 

    String pinCode; 

//getter 

//setter 
} 

Ceci est mon pom.xml

<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.icarat</groupId> 
    <artifactId>vehicleplatform</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <name>vehicleplatform</name> 
    <url>http://maven.apache.org</url> 


    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.0.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-mongodb</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <!-- mongodb java driver --> 
     <dependency> 
      <groupId>org.mongodb</groupId> 
      <artifactId>mongo-java-driver</artifactId> 
      <version>2.11.0</version> 
     </dependency> 

     <!-- swagger2 dependency --> 

     <dependency> 
      <groupId>io.springfox</groupId> 
      <artifactId> springfox-swagger2</artifactId> 
      <version>2.6.1</version> 
     </dependency> 

     <dependency> 
      <groupId>io.springfox</groupId> 
      <artifactId>springfox-swagger-ui</artifactId> 
      <version>2.6.1</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Comment nous pouvons résoudre ce problème? Merci

Répondre

2

Je trouve le problème réel. Dans mon passe-partout Atlas, le mot de passe @ (symbole) n'est donc pas un mot de passe. Je follwed le document HERE

IMPORTANT Si le mot de passe si votre mot de passe est @ BC123, contient des caractères URI réservés, vous devez échapper les caractères par RFC 2396. Par exemple, vous devez échapper au caractère @ lorsque vous spécifiez le mot de passe dans la chaîne de connexion; c'est-à-dire% 40bc123.

+0

Utilisez plutôt les propriétés spécifiques ci-dessous pour le nom d'utilisateur et le mot de passe spring.data.mongodb.username = spring.data.mongodb.password = – Fahad

0

Impossible d'instancier [com.mongodb.MongoClient]: Méthode usine 'mongo' exception jeté; l'exception imbriquée est java.lang.IllegalArgumentException: la chaîne de connexion contient informations d'utilisateur non valides. Si le nom d'utilisateur ou mot de passe contient deux points (:) ou un arobase (@) il doit être urlencoded

Le problème est très clair, si vous essayez de vous connecter avec MongoDB Atlas avec SpringBoot, votre mot de passe doit être encodé en URL ce qui est plus sûr.

Here Vous pouvez voir comment encoder l'URL dans MongoDB Atlas.