package com.vincent.rsf.server.common.datasource; import java.util.ArrayDeque; import java.util.Deque; /** * 数据源上下文 */ public final class DataSourceContextHolder { private static final ThreadLocal> CONTEXT = ThreadLocal.withInitial(ArrayDeque::new); private DataSourceContextHolder() { } public static void push(String dataSource) { CONTEXT.get().push(dataSource); } public static String peek() { Deque deque = CONTEXT.get(); return deque.isEmpty() ? null : deque.peek(); } public static void poll() { Deque deque = CONTEXT.get(); if (!deque.isEmpty()) { deque.pop(); } if (deque.isEmpty()) { CONTEXT.remove(); } } }