Tôi đã tìm thấy vấn đề. Để hoàn thiện chủ đề này, tôi sẽ chia sẻ câu trả lời, bao gồm cả mã. Vấn đề là tôi đã sử dụng thuộc tính ứng dụng spring.data.mongodb.uri sai:nó không có tên người dùng và mật khẩu trong URI, do tôi nhầm lẫn tin rằng spring.data.mongodb.username và spring.data.mongodb.password đã che đậy điều đó. Vì vậy, hoặc sử dụng uri với tên người dùng và mật khẩu, hoặc sử dụng máy chủ và cơ sở dữ liệu (và có thể cả cổng) thuộc tính mùa xuân một cách rõ ràng. Đây là mã. Nó sẽ hoạt động trong ứng dụng khởi động mùa xuân với hỗ trợ mongoDB (sử dụng khởi tạo hoặc IntelliJ để tạo dự án đó). Tôi có một mô hình:
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 ...
}
Dữ liệu được đọc và ghi thông qua một kho lưu trữ:
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> {
}
Tên cơ sở dữ liệu, máy chủ và thông tin đăng nhập có trong tệp 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
Điều quan trọng là không trộn lẫn uri với cơ sở dữ liệu và tên người dùng. Nếu bạn sử dụng uri, nó cần bao gồm tên người dùng và mật khẩu, như sau:
spring.data.mongodb.uri=mongodb://user:[email protected]/people
Để kiểm tra điều này, tôi đã sử dụng một trình chạy dòng lệnh Spring đơn giản:
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);
}
}
}
Tôi hy vọng lời giải thích này sẽ giúp ích cho những người khác không thể tìm ra, như bản thân tôi trong một vài ngày.
Cảm ơn,
Stefan