class ExpressionDataSourceSwitchStrategyMatcher extends CachedDataSourceSwitchStrategyMatcher {

    @Getter
    @Setter
    private Map<String, ExpressionStrategy> switcher = new HashMap<>();

    private static AntPathMatcher antPathMatcher = new AntPathMatcher(".");

    @Override
    public Strategy createStrategyIfMatch(Class target, Method method) {<FILL_FUNCTION_BODY>}

    @Getter
    @Setter
    public static class ExpressionStrategy implements Strategy {
        private boolean useDefaultDataSource = false;
        private boolean fallbackDefault = false;
        private String dataSourceId = null;
        private String database;
        private String expression;
        private String id;

        public boolean isUseDefaultDataSource() {
            return useDefaultDataSource && dataSourceId == null;
        }

        @Override
        public String toString() {
            return "Expression Strategy(use(" + (isUseDefaultDataSource() ? "default" : getDataSourceId()) + "),expression:" + getExpression() + ")";
        }
    }
}

        if (switcher.isEmpty()) {
            return null;
        }
        String text = target.getName().concat(".").concat(method.getName());

        return switcher.entrySet().stream()
                .filter(entry -> antPathMatcher.match(entry.getValue().getExpression(), text))
                .peek(entry -> entry.getValue().setId(entry.getKey()))
                .map(Map.Entry::getValue)
                .findFirst()
                .orElse(null);
    
<methods>public non-sealed void <init>() ,public abstract org.hswebframework.web.datasource.strategy.DataSourceSwitchStrategyMatcher.Strategy createStrategyIfMatch(Class#RAW, java.lang.reflect.Method) ,public org.hswebframework.web.datasource.strategy.DataSourceSwitchStrategyMatcher.Strategy getStrategy(org.hswebframework.web.aop.MethodInterceptorContext) ,public boolean match(Class#RAW, java.lang.reflect.Method) <variables>static Map<org.hswebframework.web.datasource.strategy.CachedDataSourceSwitchStrategyMatcher.CacheKey,org.hswebframework.web.datasource.strategy.DataSourceSwitchStrategyMatcher.Strategy> cache