J'ai trouvé le problème. Pour que ce fil soit complet, je partagerai la réponse, y compris le code. croyait que spring.data.mongodb.username et spring.data.mongodb.password couvraient cela. Donc, soit utilisez l'uri avec le nom d'utilisateur et le mot de passe, soit utilisez explicitement les propriétés de ressort de l'hôte et de la base de données (et peut-être aussi le port). Voici le code. Cela fonctionnera dans l'application de démarrage de printemps avec le support mongoDB (utilisez initializr ou IntelliJ pour créer ce projet). J'ai un modèle :
package net.IndyStef.model;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "person")
public class Person {
@Id
private String id;
private String name;
private Integer age;
public Person() {
}
public Person(String id) {
this.id = id;
}
public Person(String id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
... getters/setters omitted for breverity ...
}
Les données sont lues et écrites via un référentiel :
package net.IndyStef.repository;
import net.okrongli.model.Person;
import org.springframework.data.mongodb.repository.MongoRepository;
/**
* Created by IndyStef on 23/08/16.
*/
public interface PersonRepository extends MongoRepository<Person, String> {
}
Le nom de la base de données, l'hôte et les identifiants se trouvent dans le fichier application.properties :
spring.data.mongodb.host=192.168.1.90
spring.data.mongodb.database=people
spring.data.mongodb.username=user
spring.data.mongodb.password=password
#spring.data.mongodb.uri=mongodb://192.168.1.90/people
L'important est de ne pas mélanger l'uri avec la base de données et le nom d'utilisateur. Si vous utilisez uri, il doit inclure le nom d'utilisateur et le mot de passe, comme ceci :
spring.data.mongodb.uri=mongodb://user:[email protected]/people
Pour tester cela, j'ai utilisé un simple exécuteur de ligne de commande Spring :
package net.IndyStef;
import net.IndyStef.model.Person;
import net.IndyStef.repository.PersonRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.List;
@SpringBootApplication
public class MongoDbTestApplication implements CommandLineRunner {
public static void main(String[] args) {
SpringApplication.run(MongoDbTestApplication.class, args);
}
@Autowired
private PersonRepository repository;
@Override
public void run(String... args) {
repository.save(new Person("peter.pan", "Peter Pan", 865));
List<Person> people = repository.findAll();
for (Person person: people) {
System.out.println(person);
}
}
}
J'espère que cette explication aidera d'autres personnes qui n'ont pas pu comprendre, comme moi pendant quelques jours.
Merci,
Stéphane