Đâ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
- 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ó
- 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
- khởi động mùa xuân. 2. 3. 3
- 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.
5
Code language: PHP [php]use mydatabase;
- bao bì. Hãy gắn bó với Jar
- 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
6. Nếu mọi thứ suôn sẻ, bạn sẽ có thể tìm thấy thông báo sauCode language: PHP [php]
use mydatabase;
Code language: CSS [css]
NETWORK [listener] Listening on 127.0.0.1 NETWORK [listener] waiting for connections on port 27017
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
7Code language: PHP [php]
use mydatabase;
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
Code language: PHP [php]
use mydatabase;
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
Code language: CSS [css]
db.issues.insertOne[ { description: "This is my first issue", severity: 1, assignee: "Carlos" } ]
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
Code language: JSON / JSON with Comments [json]
{ "acknowledged" : true, "insertedId" : ObjectId["5f12e5d93fb0d91516fb5af2"] }
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à
8. Thêm một lớp mới có tên làCode language: PHP [php]
use mydatabase;
9 và dán đoạn mã sau vào đóCode language: PHP [php]
use mydatabase;
0Code language: PHP [php]
use mydatabase;
Chú thích
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íchCode language: CSS [css]
db.issues.insertOne[ { description: "This is my first issue", severity: 1, assignee: "Carlos" } ]
1 vàCode language: CSS [css]
db.issues.insertOne[ { description: "This is my first issue", severity: 1, assignee: "Carlos" } ]
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ẵnCode language: CSS [css]
db.issues.insertOne[ { description: "This is my first issue", severity: 1, assignee: "Carlos" } ]
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à
3 và bên trong nó, tạo một giao diện mới có tên làCode language: CSS [css]
db.issues.insertOne[ { description: "This is my first issue", severity: 1, assignee: "Carlos" } ]
4. Nó nên chứa đoạn mã sauCode language: CSS [css]
db.issues.insertOne[ { description: "This is my first issue", severity: 1, assignee: "Carlos" } ]
6Code language: PHP [php]
use mydatabase;
Đú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à
5, chứa một lớp mới có tên làCode language: CSS [css]
db.issues.insertOne[ { description: "This is my first issue", severity: 1, assignee: "Carlos" } ]
6Code language: CSS [css]
db.issues.insertOne[ { description: "This is my first issue", severity: 1, assignee: "Carlos" } ]
9Code language: PHP [php]
use mydatabase;
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à
7 trong thư mụcCode language: CSS [css]
db.issues.insertOne[ { description: "This is my first issue", severity: 1, assignee: "Carlos" } ]
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ứcCode language: CSS [css]
db.issues.insertOne[ { description: "This is my first issue", severity: 1, assignee: "Carlos" } ]
9 ở trên. Thêm nội dung sau vào nóCode language: CSS [css]
db.issues.insertOne[ { description: "This is my first issue", severity: 1, assignee: "Carlos" } ]
3Code language: PHP [php]
use mydatabase;
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
0 và thêm nội dung sau vào tệpCode language: JSON / JSON with Comments [json]
{ "acknowledged" : true, "insertedId" : ObjectId["5f12e5d93fb0d91516fb5af2"] }
5Code language: PHP [php]
use mydatabase;
Đ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
1 và thêm chú thích sau trước khi khai báoCode language: JSON / JSON with Comments [json]
{ "acknowledged" : true, "insertedId" : ObjectId["5f12e5d93fb0d91516fb5af2"] }
7Code language: PHP [php]
use mydatabase;
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
2 và xem các vấn đề bạn đã thêm qua MongoDBCode language: JSON / JSON with Comments [json]
{ "acknowledged" : true, "insertedId" : ObjectId["5f12e5d93fb0d91516fb5af2"] }
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
3 của bạnCode language: JSON / JSON with Comments [json]
{ "acknowledged" : true, "insertedId" : ObjectId["5f12e5d93fb0d91516fb5af2"] }
0Code language: PHP [php]
use mydatabase;
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à
4 với đoạn mã sauCode language: JSON / JSON with Comments [json]
{ "acknowledged" : true, "insertedId" : ObjectId["5f12e5d93fb0d91516fb5af2"] }
1Code language: PHP [php]
use mydatabase;
Bạn sẽ muốn đảm bảo rằng bạn cập nhật
0 để thêm khóa api Phân tách của mìnhCode language: JSON / JSON with Comments [json]
{ "acknowledged" : true, "insertedId" : ObjectId["5f12e5d93fb0d91516fb5af2"] }
2Code language: PHP [php]
use mydatabase;
Bây giờ, hãy thay đổi bộ điều khiển để nó nhận một thể hiện của
6 trong hàm tạo của nóCode language: JSON / JSON with Comments [json]
{ "acknowledged" : true, "insertedId" : ObjectId["5f12e5d93fb0d91516fb5af2"] }
3Code language: PHP [php]
use mydatabase;
Cuối cùng, hãy thay đổi phương thức
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ậtCode language: CSS [css]
db.issues.insertOne[ { description: "This is my first issue", severity: 1, assignee: "Carlos" } ]
4Code language: PHP [php]
use mydatabase;
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à
8. Nhấp vàoCode language: JSON / JSON with Comments [json]
{ "acknowledged" : true, "insertedId" : ObjectId["5f12e5d93fb0d91516fb5af2"] }
9Code language: JSON / JSON with Comments [json]
{ "acknowledged" : true, "insertedId" : ObjectId["5f12e5d93fb0d91516fb5af2"] }
Tiếp theo, nhấp vào
00 và sau đó nhấp vàoCode language: PHP [php]
use mydatabase;
01. Sau đó, nhấp vàoCode language: PHP [php]
use mydatabase;
02Code language: PHP [php]
use mydatabase;
Theo mặc định, nó sẽ thiết lập các trạng thái
03 vàCode language: PHP [php]
use mydatabase;
04, mặc định làCode language: PHP [php]
use mydatabase;
04Code language: PHP [php]
use mydatabase;
Như trước đây, duyệt đến.
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 đóCode language: PHP [php]
use mydatabase;
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ừ
04 thànhCode language: PHP [php]
use mydatabase;
03 trong phần Đặt quy tắc mặc định của xử lýCode language: PHP [php]
use mydatabase;
8Code language: JSON / JSON with Comments [json]
{ "acknowledged" : true, "insertedId" : ObjectId["5f12e5d93fb0d91516fb5af2"] }
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