Kết nối khởi động mùa xuân MongoDB

Đây là cách bạn có thể làm trong Spring Boot 2. 0 bằng cách tạo thêm MongoClient tùy chỉnh Cung cấp thêm quyền kiểm soát cho Kết nối,

Vui lòng theo dõi Liên kết github để biết Mã nguồn đầy đủ

@Configuration
@EnableMongoRepositories(basePackages = { "com.frugalis.repository" })
@ComponentScan(basePackages = { "com.frugalis.*" })
@PropertySource("classpath:application.properties")
public class MongoJPAConfig extends AbstractMongoConfiguration {

    @Value("${com.frugalis.mongo.database}")
    private String database;
    @Value("${com.frugalis.mongo.server}")
    private String host;
    @Value("${com.frugalis.mongo.port}")
    private String port;
    @Value("${com.frugalis.mongo.username}")
    private String username;
    @Value("${com.frugalis.mongo.password}")
    private String password;


    @Override
    protected String getDatabaseName() {
        return database;
    }

    @Override
    protected String getMappingBasePackage() {
        return "com.frugalis.entity.mongo";
    }

    @Bean
    public MongoTemplate mongoTemplate() throws Exception {
        return new MongoTemplate(mongoClient(), getDatabaseName());
    }

    @Override
    @Bean
    public MongoClient mongoClient() {

        List allCred = new ArrayList();
        System.out.println("???????????????????"+username+" "+database+" "+password+" "+host+" "+port);
        allCred.add(MongoCredential.createCredential(username, database, password.toCharArray()));
        MongoClient client = new MongoClient((new ServerAddress(host, Integer.parseInt(port))), allCred);
        client.setWriteConcern(WriteConcern.ACKNOWLEDGED);

        return client;
    }} 

MongoDB là một giải pháp cơ sở dữ liệu phi quan hệ phổ biến. Nó có kết hợp tốt với Spring Boot không? . Trong bài đăng này, chúng tôi sẽ chỉ cho bạn cách sử dụng MongoDB làm cơ chế lưu trữ cho ứng dụng Spring Boot. Trong khi chúng tôi đang ở đó, chúng tôi sẽ chỉ cho bạn cách thêm cờ tính năng vào ứng dụng của bạn

Cờ tính năng—hay còn gọi là chuyển đổi tính năng hoặc chuyển đổi tính năng—là một kỹ thuật cho phép bạn ẩn một số tính năng nhất định của ứng dụng khỏi những người dùng hoặc phân khúc người dùng nhất định. Một khả năng như vậy là rất mạnh mẽ. trong số những thứ khác, nó cho phép bạn hợp lý hóa vòng đời phát hành phần mềm của mình vì bạn có thể gửi mã chứa các tính năng đã hoàn thành một phần khi biết rằng người dùng của bạn sẽ không thể truy cập chúng. Chuyển đổi tính năng cũng cho phép bạn triển khai một tính năng cho một phần cơ sở người dùng của mình, từ đó tạo điều kiện thuận lợi cho các quy trình như thử nghiệm A/B và phát hành canary

Hãy bắt đầu nào

Khởi động mùa xuân và MongoDB. Hãy tạo một ứng dụng CRUD

Để chứng minh rằng Spring Boot và MongoDB có thể là một nhóm khá tuyệt vời, chúng tôi sẽ viết một ứng dụng CRUD. Ứng dụng này sẽ là một trình theo dõi vấn đề đơn giản cho phép chúng tôi chèn, chỉnh sửa, đọc và xóa các vấn đề, mỗi vấn đề chứa mô tả, mức độ nghiêm trọng, dấu thời gian và người được giao

Hãy bắt đầu bằng cách cài đặt và định cấu hình tất cả những gì bạn cần để bắt đầu

Cài đặt MongoDB

Bạn cần MongoDB cho hướng dẫn này, nhưng để ngắn gọn, chúng tôi sẽ không hướng dẫn bạn cách cài đặt nó. Đi tới hướng dẫn sử dụng MongoDB và xem hướng dẫn cài đặt cho nền tảng cụ thể của bạn

Xem lại các Yêu cầu Java

Trước khi bạn tiếp tục, hãy đảm bảo rằng môi trường của bạn có tất cả những gì bạn cần. Để bắt đầu, hãy đảm bảo rằng bạn đã cài đặt JDK (Tôi sẽ sử dụng phiên bản 1. 8, nhưng các phiên bản mới hơn sẽ hoạt động tốt như vậy) và biến môi trường Java_HOME của bạn đã được đặt. Tôi sẽ sử dụng Maven làm hệ thống xây dựng của mình, nhưng bạn có thể sử dụng Gradle nếu bạn thích nó hơn

Tôi cũng sẽ sử dụng phiên bản cộng đồng miễn phí của IntelliJ IDEA làm IDE của tôi trong hướng dẫn này. Mặc dù sử dụng nó sẽ giúp việc theo dõi dễ dàng hơn, nhưng bạn chắc chắn có thể sử dụng bất kỳ IDE hoặc trình soạn thảo văn bản nào bạn muốn

Lấy SDK tách

Bước tiếp theo của bạn là đăng ký tài khoản Split miễn phí và sau đó đăng nhập. Bạn sẽ thấy nút “DE” ở góc trên bên trái, đây là nút không gian làm việc. Nhấp vào nó, rồi nhấp vào “Cài đặt quản trị viên. ”

Sau đó, nhấp vào “API Keys” ở bảng điều khiển bên trái. Bạn sẽ thấy các khóa có sẵn cho tất cả các môi trường của mình. Đối với hướng dẫn này, bạn sẽ sử dụng khóa SDK cho môi trường mặc định theo giai đoạn. Chỉ cần nhấp vào “Sao chép” và khóa sẽ có sẵn trong khay nhớ tạm của bạn

Hiện tại, hãy giữ chìa khóa của bạn ở nơi an toàn. Bạn sẽ cần nó sớm

Bootstrap ứng dụng với Spring Initializr

Spring Initializr cung cấp cho chúng ta một cách nhanh chóng và dễ dàng để bắt đầu một ứng dụng Spring Boot mới. Đến đó và thay đổi các tùy chọn như thế này

  1. Dự án. Dự án maven. Như tôi đã đề cập, tôi đang sử dụng Maven cho bài đăng này, nhưng tất nhiên bạn có thể sử dụng Gradle nếu bạn cảm thấy thoải mái hơn với nó
  2. Ngôn ngữ. Java. Mặc dù Kotlin là một ngôn ngữ tuyệt vời, nhưng hãy sử dụng Java, không vì lý do nào khác ngoài việc phục vụ cho số lượng người tối đa
  3. khởi động mùa xuân. 2. 3. 3
  4. Siêu dữ liệu dự án. Viết bất cứ thứ gì bạn thích hoặc chỉ để các giá trị mặc định. Đặt tên cho hiện vật.

    use mydatabase;

    Code language: PHP (php)
    5
  5. bao bì. Hãy gắn bó với Jar
  6. Phiên bản Java. Tôi đã chọn phiên bản 8, nhưng một lần nữa, hãy chọn bất cứ thứ gì bạn cảm thấy thích

Sau đó, bạn sẽ cần thêm một số phụ thuộc

Tôi đã chọn bốn phụ thuộc. Dữ liệu mùa xuân MongoDB, Spring Web, Thymeleaf và Lombok. Lombok là tùy chọn, nhưng nó sẽ giúp chúng tôi loại bỏ rất nhiều mã soạn sẵn

Sau khi mọi thứ được định cấu hình, hãy nhấp vào nút “Tạo” để tải xuống tệp zip chứa mã nguồn của dự án của bạn. Giải nén nó ở một vị trí dễ truy cập và mở dự án bằng IntelliJ IDEA hoặc IDE yêu thích của bạn

Tạo Bộ sưu tập trong MongoDB

Tại thời điểm này, bạn sẽ không chạm vào ứng dụng trong một thời gian. Thay vào đó, hãy vui vẻ với MongoDB. Đi đến thiết bị đầu cuối của bạn và khởi động MongoDB bằng cách chạy lệnh

use mydatabase;

Code language: PHP (php)
6. Nếu mọi thứ suôn sẻ, bạn sẽ có thể tìm thấy thông báo sau

NETWORK [listener] Listening on 127.0.0.1 NETWORK [listener] waiting for connections on port 27017

Code language: CSS (css)

Bây giờ, với cửa sổ đầu cuối này đã mở, hãy mở một cửa sổ khác và kết nối với MongoDB bằng cách chạy lệnh

use mydatabase;

Code language: PHP (php)
7

MongoDB lưu trữ dữ liệu dưới dạng tài liệu ở định dạng BSON. Tài liệu được lưu trữ trong một bộ sưu tập, do đó, được giữ trong cơ sở dữ liệu. Vì vậy, hãy tạo một cơ sở dữ liệu mới và chuyển sang cơ sở dữ liệu đó bằng cách chạy lệnh này

use mydatabase;

Code language: PHP (php)

Sau đó, tạo một bộ sưu tập mới và bao gồm một tài liệu mới trong đó bằng một bước duy nhất

db.issues.insertOne( { description: "This is my first issue", severity: 1, assignee: "Carlos" } )

Code language: CSS (css)

Sau khi bạn chạy lệnh, MongoDB sẽ hiển thị thông báo cho bạn biết rằng lệnh của bạn đã được thực thi thành công và hiển thị ID của tài liệu mới tạo của bạn

{ "acknowledged" : true, "insertedId" : ObjectId("5f12e5d93fb0d91516fb5af2") }

Code language: JSON / JSON with Comments (json)

Lặp lại quy trình một vài lần để đưa vào bộ sưu tập của bạn một số tài liệu

Xong?

Đặt nó tất cả cùng nhau

Hãy bắt đầu bằng cách thực hiện M của mẫu MVC, tạo mô hình cho ứng dụng của bạn. Tạo một gói mới có tên là

use mydatabase;

Code language: PHP (php)
8. Thêm một lớp mới có tên là

use mydatabase;

Code language: PHP (php)
9 và dán đoạn mã sau vào đó

use mydatabase;

Code language: PHP (php)
0

Chú thích

db.issues.insertOne( { description: "This is my first issue", severity: 1, assignee: "Carlos" } )

Code language: CSS (css)
0 cho phép chúng tôi xác định tên của bộ sưu tập MongoDB sẽ chứa dữ liệu của bạn. Các chú thích

db.issues.insertOne( { description: "This is my first issue", severity: 1, assignee: "Carlos" } )

Code language: CSS (css)
1 và

db.issues.insertOne( { description: "This is my first issue", severity: 1, assignee: "Carlos" } )

Code language: CSS (css)
2 trên đầu lớp là từ Lombok. Bằng cách đó, getters và setters được tạo tự động, giúp chúng ta không phải viết nhiều mã soạn sẵn

Bây giờ bạn sẽ tạo một kho lưu trữ. Tạo một gói mới có tên là

db.issues.insertOne( { description: "This is my first issue", severity: 1, assignee: "Carlos" } )

Code language: CSS (css)
3 và bên trong nó, tạo một giao diện mới có tên là

db.issues.insertOne( { description: "This is my first issue", severity: 1, assignee: "Carlos" } )

Code language: CSS (css)
4. Nó nên chứa đoạn mã sau

use mydatabase;

Code language: PHP (php)
6

Đúng rồi. bạn không xác định bất kỳ phương thức nào trong giao diện, ít nhất là bây giờ. Bạn sẽ thấy rằng chỉ bằng cách mở rộng từ giao diện MongoRepository, bạn đã có thể làm được rất nhiều việc

Đối với bước tiếp theo, hãy tạo bộ điều khiển của bạn. Bạn đã biết bài tập. tạo một gói mới có tên là

db.issues.insertOne( { description: "This is my first issue", severity: 1, assignee: "Carlos" } )

Code language: CSS (css)
5, chứa một lớp mới có tên là

db.issues.insertOne( { description: "This is my first issue", severity: 1, assignee: "Carlos" } )

Code language: CSS (css)
6

use mydatabase;

Code language: PHP (php)
9

Chữ cái duy nhất bạn vẫn chưa xử lý được là chữ V, cho View. Vì vậy, hãy khắc phục điều đó bằng cách thêm chế độ xem đầu tiên vào ứng dụng của bạn. Tạo một tệp HTML mới có tên là

db.issues.insertOne( { description: "This is my first issue", severity: 1, assignee: "Carlos" } )

Code language: CSS (css)
7 trong thư mục

db.issues.insertOne( { description: "This is my first issue", severity: 1, assignee: "Carlos" } )

Code language: CSS (css)
8. Đây là thư mục mặc định cho các mẫu Thymeleaf. Và, tên tệp này khớp với giá trị được trả về từ phương thức

db.issues.insertOne( { description: "This is my first issue", severity: 1, assignee: "Carlos" } )

Code language: CSS (css)
9 ở trên. Thêm nội dung sau vào nó

use mydatabase;

Code language: PHP (php)
3

Bây giờ, hãy thêm một chi tiết cuối cùng trước khi chạy ứng dụng của bạn. Chuyển đến tệp

{ "acknowledged" : true, "insertedId" : ObjectId("5f12e5d93fb0d91516fb5af2") }

Code language: JSON / JSON with Comments (json)
0 và thêm nội dung sau vào tệp

use mydatabase;

Code language: PHP (php)
5

Điều đó sẽ cho phép ứng dụng của bạn kết nối chính xác với cơ sở dữ liệu MongoDB của bạn

Chạy ứng dụng MongoDB + Spring Boot

Đến bây giờ, bạn đã sẵn sàng để chạy ứng dụng của mình. Chuyển đến lớp

{ "acknowledged" : true, "insertedId" : ObjectId("5f12e5d93fb0d91516fb5af2") }

Code language: JSON / JSON with Comments (json)
1 và thêm chú thích sau trước khi khai báo

use mydatabase;

Code language: PHP (php)
7

Sau đó, thực hiện lớp bằng cách nhấp vào nút phát IDE của bạn. Nếu mọi thứ suôn sẻ, bạn có thể truy cập

{ "acknowledged" : true, "insertedId" : ObjectId("5f12e5d93fb0d91516fb5af2") }

Code language: JSON / JSON with Comments (json)
2 và xem các vấn đề bạn đã thêm qua MongoDB

Thêm cờ tính năng vào ứng dụng Spring Boot + MongoDB của bạn

Giả sử nhóm cần thêm một tính năng mới vào ứng dụng này. Và tính năng rất đơn giản. khi liệt kê các vấn đề, chúng nên được sắp xếp theo mức độ nghiêm trọng của chúng, từ nghiêm trọng nhất đến thấp nhất. Vì vậy, trong ví dụ trên, vấn đề đầu tiên phải là vấn đề "Sự cố cuối cùng", vì vấn đề này có mức độ nghiêm trọng cao nhất

Bạn sẽ tạo đối tượng địa lý nhưng ẩn nó bằng nút chuyển đối tượng địa lý. Bằng cách đó, bạn thậm chí có thể triển khai tính năng này vào sản xuất nhưng vẫn vô hiệu hóa tính năng này

Thêm cờ tính năng

Hãy bắt đầu bằng cách thêm Java Split SDK vào dự án. Thêm phần phụ thuộc sau vào tệp

{ "acknowledged" : true, "insertedId" : ObjectId("5f12e5d93fb0d91516fb5af2") }

Code language: JSON / JSON with Comments (json)
3 của bạn

use mydatabase;

Code language: PHP (php)
0

Xây dựng ứng dụng và nếu không có lỗi xảy ra, bạn đã sẵn sàng. Bước tiếp theo là tạo một lớp cấu hình. Ở cấp độ gốc của dự án, hãy thêm một lớp mới có tên là

{ "acknowledged" : true, "insertedId" : ObjectId("5f12e5d93fb0d91516fb5af2") }

Code language: JSON / JSON with Comments (json)
4 với đoạn mã sau

use mydatabase;

Code language: PHP (php)
1

Bạn sẽ muốn đảm bảo rằng bạn cập nhật

{ "acknowledged" : true, "insertedId" : ObjectId("5f12e5d93fb0d91516fb5af2") }

Code language: JSON / JSON with Comments (json)
0 để thêm khóa api Phân tách của mình

use mydatabase;

Code language: PHP (php)
2

Bây giờ, hãy thay đổi bộ điều khiển để nó nhận một thể hiện của

{ "acknowledged" : true, "insertedId" : ObjectId("5f12e5d93fb0d91516fb5af2") }

Code language: JSON / JSON with Comments (json)
6 trong hàm tạo của nó

use mydatabase;

Code language: PHP (php)
3

Cuối cùng, hãy thay đổi phương thức

db.issues.insertOne( { description: "This is my first issue", severity: 1, assignee: "Carlos" } )

Code language: CSS (css)
9, để nó có thể sắp xếp các vấn đề theo mức độ nghiêm trọng của chúng khi cờ tính năng của bạn được bật

use mydatabase;

Code language: PHP (php)
4

Tạo và quản lý phần chia

Bước tiếp theo và cũng là bước cuối cùng thực sự tạo ra cách xử lý bằng cách sử dụng Split

Trên bảng điều khiển Chia tách của bạn, hãy nhấp vào Chia tách ở bên trái. Nhấp vào Tạo phần tách. Tên là

{ "acknowledged" : true, "insertedId" : ObjectId("5f12e5d93fb0d91516fb5af2") }

Code language: JSON / JSON with Comments (json)
8. Nhấp vào

{ "acknowledged" : true, "insertedId" : ObjectId("5f12e5d93fb0d91516fb5af2") }

Code language: JSON / JSON with Comments (json)
9

Tiếp theo, nhấp vào

use mydatabase;

Code language: PHP (php)
00 và sau đó nhấp vào

use mydatabase;

Code language: PHP (php)
01. Sau đó, nhấp vào

use mydatabase;

Code language: PHP (php)
02

Theo mặc định, nó sẽ thiết lập các trạng thái

use mydatabase;

Code language: PHP (php)
03 và

use mydatabase;

Code language: PHP (php)
04, mặc định là

use mydatabase;

Code language: PHP (php)
04

Như trước đây, duyệt đến.

use mydatabase;

Code language: PHP (php)
06. Tại thời điểm này, bạn sẽ thấy không có thay đổi nào trong danh sách từ trước đó

Nếu bạn quay lại Bảng điều khiển phân tách của mình, bạn có thể thay đổi trạng thái mặc định từ

use mydatabase;

Code language: PHP (php)
04 thành

use mydatabase;

Code language: PHP (php)
03 trong phần Đặt quy tắc mặc định của xử lý

{ "acknowledged" : true, "insertedId" : ObjectId("5f12e5d93fb0d91516fb5af2") }

Code language: JSON / JSON with Comments (json)
8

Nhấp vào Lưu thay đổi và Xác nhận lại

Bây giờ, khi bạn làm mới trang trong trình duyệt, bạn sẽ thấy danh sách các sự cố theo thứ tự giảm dần theo mức độ nghiêm trọng

Bạn có thể thấy việc sử dụng cách xử lý Split cho phép bạn thay đổi hành vi mà không cần phải khởi động lại ứng dụng Spring Boot

Khởi động mùa xuân và MongoDB. Một bộ đôi năng động

Cơ sở dữ liệu không chỉ tồn tại trên mô hình quan hệ. Thay vào đó, chúng có thể tồn tại ở nhiều dạng và hình dạng khác nhau. Phong trào NoSQL chắc chắn là một phần quan trọng trong đó, và MongoDB là một trong những cơ sở dữ liệu NoSQL phổ biến nhất—nếu không muốn nói là phổ biến nhất—

Trong bài đăng hôm nay, chúng tôi đã chỉ ra cách MongoDB có thể là lựa chọn cơ sở dữ liệu khả thi cho ứng dụng Khởi động mùa xuân của bạn và cả cách bạn có thể thêm cờ tính năng vào ứng dụng này và lý do bạn muốn làm như vậy

Nếu bạn muốn tìm hiểu thêm về Khởi động mùa xuân, cờ tính năng hoặc thử nghiệm trong sản xuất, chúng tôi có một số tài nguyên tuyệt vời dành cho bạn

  • Đạt được triển khai liên tục với cờ tính năng
  • Bắt đầu với Feature Flags trong Node
  • Cách triển khai thử nghiệm trong sản xuất
  • Tăng năng suất của bạn bằng cách thử nghiệm trong sản xuất
  • Theo dõi hiệu suất cờ tính năng của bạn với Relic mới

Như mọi khi, nếu bạn đang tìm kiếm thêm nội dung tuyệt vời như thế này, thì chúng tôi muốn bạn theo dõi chúng tôi trên Twitter @splitsoftware và đăng ký kênh YouTube của chúng tôi

Làm cách nào để kết nối với MongoDB bằng Spring Boot?

Có một số tham số quan trọng mà chúng ta cần biết để kết nối máy chủ MongoDB với Spring Boot. .
Cổng (Theo cổng mặc định – 27017)
Máy chủ (Theo Máy chủ mặc định – localhost)
Tên cơ sở dữ liệu
Thông tin xác thực (Tùy chọn)

Làm cách nào để kết nối MongoDB với tên người dùng và mật khẩu trong Spring Boot?

Để đặt tên người dùng và mật khẩu, tôi đặt các biến MONGO_INITDB_DATABASE, MONGO_INITDB_ROOT_USERNAME và MONGO_INITDB_ROOT_PASSWORD. Và bây giờ trên ứng dụng khởi động mùa xuân, có thể sử dụng URI. mongodb. //tên tài khoản. mật khẩu @ máy chủ. 27017/db_name?authSource=admin và nó đang hoạt động.

Làm cách nào để truy vấn MongoDB trong Spring Boot?

Về cơ bản, có 4 cách để chúng ta có thể truy vấn MongoDB từ ứng dụng khởi động mùa xuân. .
Các phương thức được tạo tự động với kho lưu trữ Mongo
Sử dụng Chú thích @Query
Sử dụng Truy vấn tiêu chí với MongoTemplate
Sử dụng Truy vấnDSL

@document vào mùa xuân là gì?

Chú thích @Document . Tham số phù hợp nhất là giá trị để chỉ định tên bộ sưu tập trong cơ sở dữ liệu. Chú thích @Document chỉ định loại bộ sưu tập cho DOCUMENT. The annotations @Document applied to a class marks this class as a candidate for mapping to the database. The most relevant parameter is value to specify the collection name in the database. The annotation @Document specifies the collection type to DOCUMENT .