EzyPlatform quản lý cài đặt thế nào?
Back To BlogsSử dụng cơ sở dữ liệu
Cụ thể thì EzyPlatform sinh ra một bảng có tên là ezy_settings
với mã nguồn như sau:
CREATE TABLE IF NOT EXISTS `ezy_settings` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT, `setting_name` varchar(120) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT '', `data_type` varchar(12) COLLATE utf8mb4_unicode_520_ci NOT NULL DEFAULT 'STRING', `setting_value` varchar(2048) COLLATE utf8mb4_unicode_520_ci NOT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `key_setting_name` (`setting_name`), INDEX `index_data_type` (`data_type`), INDEX `index_created_at` (`created_at`), INDEX `index_updated_at` (`updated_at`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;
Ý nghĩa của các trường trong bảng sẽ như sau:
- id: Là id của setting được tăng dần.
- setting_name: Là tên của cài đặt, thường được yêu cầu các nhà phát triển viết dưới dạng snake_case (viết thường và gạch dưới).
- data_type: Là kiểu dữ liệu của cài đặt, trường này sẽ hỗ trợ việc serialize và deserialize giá trị của setting.
- setting_value: Là giá trị của cài đặt, thường là bất kỳ giá trị nào cũng được.
- created_at: Là thời gian điểm cài đặt được tạo ra.
- updated_at: Là thời điểm cài đặt được cập nhật. Bạn có thể sử dụng trường này để cập nhật cache cài đặt khi có thay đổi.
Thiết kế lớp
Mặc dù có một bảng nhưng sẽ có tương đối nhiều lớp được tạo ra để quản lý cài đặt:
- Setting: Đây là lớp entity ánh xạ với bảng
ezy_settings
. - SettingRepository: Đây là lớp repository cung cấp các hàm truy vấn lấy các cài đặt từ cơ sở dữ liệu.
- SettingService: Đây là một giao diện cung cấp các hàm cơ bản thêm sửa xoá cài đặt.
- DefaultSettingService: Đây là lớp cài đặt sẵn các hàm mặc định của
SettingService
. - Lớp WebSettingService: Đây là lớp chuyên dùng cho web.
- SocketSettingService: Đây là lớp chuyên dùng cho socket.
- AdminSettingService: Đây là lớp chuyên dùng cho admin, trong lớp này cung cấp thêm một số hàm đặc trưng cho admin mà web hay socket không có.
- AdminSettingsController: Cung cấp giao diện cho màn hình cài đặt trên giao diện quản trị.
- AdminApiSettingsController: Cung cấp các API cho quản lý cài đặt.
Bạn cần lưu ý rằng nên hạn chế gọi thay đổi cài đặt ở web hay socket để tránh rủi ro về bảo mật, việc thay đổi hay thêm mới setting thường sẽ diễn ra ở admin.
Sử dụng
Bạn có thể tìm thấy các menu dành cài đặt ở phần cuối của sidebar:
Bạn có thể xem danh sách các cài đặt:
Bổ sung một cài đặt:
Hay sửa đổi một cài đặt:
Bạn có thể sử dụng các cài đặt trong mã nguồn của mình ví dụ:
public void setInputDeliveryOrderCountryId(long countryId) { settingService.setLongValue( SETTING_KEY_INPUT_DELIVERY_ORDER_COUNTRY_ID, countryId ); } public long getInputDeliveryOrderCountryId() { return settingService.getLongValue( SETTING_KEY_INPUT_DELIVERY_ORDER_COUNTRY_ID ); }
Tổng kết
Việc sử dụng các cài đặt được lưu trong cơ sở dữ liệu sẽ giúp EzyPlatform trở nên động hơn và hạn chế việc khởi động lại. Cái giá phải trả là việc cài đặt tương đối nhiều lớp, tuy nhiên EzyPlatform đã làm công việc đó cho bạn. Để đảm bảo hiệu năng thì EzyPlatform còn cho phép cache các cài đặt, mình sẽ chia sẻ vấn đề này ở các bài tiếp theo nhé.