datasource - lịch bóng đá ngoại hạng anh
Thực tế thì tiêu đề này không hoàn toàn chính xác. Nên là cách chuyển đổi nguồn dữ liệu động sử dụng Druid, chỉ là nó được áp dụng top kiến tạo ngoại hạng anh 2025 trong khung Spring Boot mà thôi. Mình đã mất khá nhiều thời gian lịch bóng đá ngoại hạng anh chuẩn bị mã nguồn này, và từng sử dụng nó trong một lần di chuyển cơ sở dữ liệu. Lúc đó mình nhận ra rằng Druid thật sự rất mạnh mẽ, giúp việc chuyển đổi nguồn dữ liệu trở nên dễ dàng hơn.
Trong tình huống này, có một chút khác biệt so với cách mình đã làm trước đây. Trong dự án, mình thường sử dụng trung tâm cấu hình để kiểm soát việc chuyển đổi nguồn dữ liệu theo cách thống nhất. Tuy tin tức the thao bóng đá nhiên, ví dụ dưới đây còn bổ sung thêm khả năng cấu hình thông qua các annotation trên interface.
Phần cốt lõi
Để thực hiện chuyển đổi nguồn dữ liệu dựa trên Spring JDBC và Druid, chúng ta sẽ kế thừa từ lớp org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource
. Phương thức determineCurrentLookupKey
của lớp này sẽ được gọi để lấy đối tượng quyết định chọn nguồn dữ liệu nào - tức là lookupKey. Qua đó, chúng ta có thể thấy rằng lookupKey đóng vai trò quan trọng trong việc định tuyến đến đúng nguồn dữ liệu.
1public class DynamicDataSource extends AbstractRoutingDataSource {
2 @Override
3 protected Object determineCurrentLookupKey() {
4 if (DatabaseContextHolder.getDatabaseType() != null) {
5 return DatabaseContextHolder.getDatabaseType().getName();
6 }
7 return DatabaseType.MASTER1.getName();
8 }
9}