瀏覽代碼

优化数据源切换器通用性

zhou-hao 5 年之前
父節點
當前提交
7251077a8e

+ 8 - 4
hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/switcher/DefaultDataSourceSwitcher.java

@@ -18,9 +18,13 @@ public class DefaultDataSourceSwitcher implements DataSourceSwitcher {
     //默认数据源标识
     private static final String DEFAULT_DATASOURCE_ID = DataSourceSwitcher.class.getName() + "_default_";
 
-    private Logger logger = LoggerFactory.getLogger(this.getClass());
+    protected Logger logger = LoggerFactory.getLogger(this.getClass());
 
-    private Deque<String> getUsedHistoryQueue() {
+    protected String getDefaultDataSourceIdKey(){
+        return DEFAULT_DATASOURCE_ID;
+    }
+
+    protected Deque<String> getUsedHistoryQueue() {
         // 从ThreadLocal中获取一个使用记录
         return ThreadLocalUtils.get(DefaultDataSourceSwitcher.class.getName() + "_queue", LinkedList::new);
     }
@@ -54,7 +58,7 @@ public class DefaultDataSourceSwitcher implements DataSourceSwitcher {
 
     @Override
     public void useDefault() {
-        getUsedHistoryQueue().addLast(DEFAULT_DATASOURCE_ID);
+        getUsedHistoryQueue().addLast(getDefaultDataSourceIdKey());
         if (logger.isDebugEnabled()) {
             logger.debug("try use default datasource");
         }
@@ -67,7 +71,7 @@ public class DefaultDataSourceSwitcher implements DataSourceSwitcher {
         }
 
         String activeId = getUsedHistoryQueue().getLast();
-        if (DEFAULT_DATASOURCE_ID.equals(activeId)) {
+        if (getDefaultDataSourceIdKey().equals(activeId)) {
             return null;
         }
         return activeId;

+ 8 - 4
hsweb-datasource/hsweb-datasource-api/src/main/java/org/hswebframework/web/datasource/switcher/DefaultDatabaseSwitcher.java

@@ -18,9 +18,13 @@ public class DefaultDatabaseSwitcher implements DatabaseSwitcher {
     //默认数据源标识
     private static final String DEFAULT_DATASOURCE_ID = DatabaseSwitcher.class.getName() + "_default_";
 
-    private Logger logger = LoggerFactory.getLogger(this.getClass());
+    protected Logger logger = LoggerFactory.getLogger(this.getClass());
 
-    private Deque<String> getUsedHistoryQueue() {
+    protected String getDefaultDataSourceIdKey(){
+        return DEFAULT_DATASOURCE_ID;
+    }
+
+    protected Deque<String> getUsedHistoryQueue() {
         // 从ThreadLocal中获取一个使用记录
         return ThreadLocalUtils.get(DefaultDatabaseSwitcher.class.getName() + "_queue", LinkedList::new);
     }
@@ -54,7 +58,7 @@ public class DefaultDatabaseSwitcher implements DatabaseSwitcher {
 
     @Override
     public void useDefault() {
-        getUsedHistoryQueue().addLast(DEFAULT_DATASOURCE_ID);
+        getUsedHistoryQueue().addLast(getDefaultDataSourceIdKey());
         if (logger.isDebugEnabled()) {
             logger.debug("try use default database");
         }
@@ -67,7 +71,7 @@ public class DefaultDatabaseSwitcher implements DatabaseSwitcher {
         }
 
         String activeId = getUsedHistoryQueue().getLast();
-        if (DEFAULT_DATASOURCE_ID.equals(activeId)) {
+        if (getDefaultDataSourceIdKey().equals(activeId)) {
             return null;
         }
         return activeId;