4.2.1 Kích hoạt Spring Data MongoDB
Để bắt đầu với Spring Data MongoDB, bạn cần thêm starter Spring Data MongoDB vào phần build của dự án. Giống như Spring Data Cassandra, Spring Data MongoDB cung cấp hai starter riêng biệt để lựa chọn: một cho reactive và một cho non-reactive. Chúng ta sẽ tìm hiểu các tùy chọn reactive để lưu trữ dữ liệu trong chương 13. Còn bây giờ, hãy thêm dependency sau vào phần build để làm việc với starter MongoDB non-reactive:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>
spring-boot-starter-data-mongodb
</artifactId>
</dependency>Dependency này cũng có sẵn trong Spring Initializr bằng cách chọn vào hộp kiểm MongoDB dưới mục NoSQL.
Bằng cách thêm starter này vào build, autoconfiguration sẽ được kích hoạt để bật hỗ trợ Spring Data cho việc viết các interface repository tự động, giống như bạn đã làm với JPA trong chương 3 hoặc với Cassandra ở phần trước của chương này.
Theo mặc định, Spring Data MongoDB giả định rằng bạn đang chạy một server MongoDB cục bộ và đang lắng nghe trên cổng 27017. Nếu bạn đã cài đặt Docker trên máy, một cách đơn giản để khởi chạy MongoDB là dùng dòng lệnh sau:
docker run -p 27017:27017 -d mongo:latestNhưng để thuận tiện cho việc phát triển hoặc kiểm thử, bạn có thể chọn làm việc với một Mongo database nhúng (embedded). Để làm điều đó, hãy thêm dependency sau của Flapdoodle vào build của bạn:
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
<!-- <scope>test</scope> -->
</dependency>Cơ sở dữ liệu nhúng Flapdoodle mang lại tất cả sự tiện lợi tương tự như làm việc với cơ sở dữ liệu Mongo trong bộ nhớ (in-memory), tương tự như H2 khi làm việc với dữ liệu quan hệ. Tức là, bạn sẽ không cần khởi chạy một cơ sở dữ liệu riêng biệt, nhưng toàn bộ dữ liệu sẽ bị xóa sạch khi ứng dụng được khởi động lại.
Cơ sở dữ liệu nhúng rất phù hợp cho phát triển và kiểm thử, nhưng khi đưa ứng dụng vào môi trường production, bạn sẽ cần cấu hình một số thuộc tính để Spring Data MongoDB biết nơi và cách truy cập cơ sở dữ liệu Mongo production, như sau:
spring:
data:
mongodb:
host: mongodb.tacocloud.com
port: 27017
username: tacocloud
password: s3cr3tp455w0rd
database: tacoclouddbKhông phải tất cả các thuộc tính trên đều bắt buộc, nhưng chúng sẽ giúp Spring Data MongoDB biết cách kết nối đến đúng địa chỉ trong trường hợp cơ sở dữ liệu Mongo của bạn không chạy ở localhost. Chi tiết từng thuộc tính như sau:
- spring.data.mongodb.host —— Tên máy chủ nơi Mongo đang chạy (mặc định:
localhost) - spring.data.mongodb.port —— Cổng mà Mongo đang lắng nghe (mặc định:
27017) - spring.data.mongodb.username —— Tên người dùng để truy cập Mongo nếu có bảo mật
- spring.data.mongodb.password —— Mật khẩu để truy cập Mongo nếu có bảo mật
- spring.data.mongodb.database —— Tên cơ sở dữ liệu (mặc định: test)
Giờ đây, khi Spring Data MongoDB đã được kích hoạt trong dự án, bạn cần chú thích (annotate) các đối tượng miền (domain objects) để lưu trữ dưới dạng tài liệu (documents) trong MongoDB.
