Ik heb het probleem gevonden. Voor de volledigheid van deze thread, zal ik het antwoord delen, inclusief de code. Het probleem was dat ik de toepassingseigenschap spring.data.mongodb.uri verkeerd gebruikte:het had de gebruikersnaam en het wachtwoord niet in de URI, omdat ik per ongeluk geloofde dat spring.data.mongodb.username en spring.data.mongodb.password dat dekten. Gebruik dus ofwel de uri met gebruikersnaam en wachtwoord, of gebruik expliciet de spring-eigenschappen van host en database (en misschien ook poort). Hier is de code. Het werkt in de spring boot-app met mongoDB-ondersteuning (gebruik initializr of IntelliJ om dat project te maken). Ik heb een model:
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 ...
}
De gegevens worden gelezen en geschreven via een repository:
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> {
}
De databasenaam, host en referenties staan in het bestand 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
Belangrijk is om de uri niet te mixen met database en gebruikersnaam. Als je uri gebruikt, moet het de gebruikersnaam en het wachtwoord bevatten, zoals dit:
spring.data.mongodb.uri=mongodb://user:[email protected]/people
Om dit te testen heb ik een eenvoudige Spring command line runner gebruikt:
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);
}
}
}
Ik hoop dat deze uitleg anderen helpt die er niet achter konden komen, zoals ikzelf voor een paar dagen.
Bedankt,
Stefan