Saya menemukan masalahnya. Untuk kelengkapan thread ini, saya akan share jawabannya, termasuk kodenya. Soalnya saya salah menggunakan property application spring.data.mongodb.uri :tidak ada username dan password di URI, karena saya salah percaya bahwa spring.data.mongodb.username dan spring.data.mongodb.password menutupi itu. Jadi, gunakan uri dengan nama pengguna dan kata sandi, atau gunakan properti pegas host dan database (dan mungkin juga port) secara eksplisit. Ini kodenya. Ini akan bekerja di aplikasi boot musim semi dengan dukungan mongoDB (gunakan initializr atau IntelliJ untuk membuat proyek itu). Saya punya 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 ...
}
Data dibaca dan ditulis melalui repositori:
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> {
}
Nama database, host, dan kredensial ada di file 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
Penting adalah untuk tidak mencampur uri dengan database dan username. Jika Anda menggunakan uri, itu harus menyertakan nama pengguna dan kata sandi, seperti ini:
spring.data.mongodb.uri=mongodb://user:[email protected]/people
Untuk menguji ini, saya menggunakan pelari baris perintah Spring sederhana:
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);
}
}
}
Saya harap penjelasan ini membantu orang lain yang tidak dapat memahaminya, seperti saya selama beberapa hari.
Terima kasih,
Stefan