class AnnotationDataSourceSwitchStrategyMatcher extends CachedDataSourceSwitchStrategyMatcher {
    static final Set<String> ignoreMethod = new HashSet<>(Arrays.asList("toString", "clone", "equals"));

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


}

        if (ignoreMethod.contains(method.getName())) {
            return null;
        }
        UseDataSource useDataSource = AnnotationUtils.findAnnotation(target, method, UseDataSource.class);
        UseDefaultDataSource useDefaultDataSource = AnnotationUtils.findAnnotation(target, method, UseDefaultDataSource.class);

        boolean support = useDataSource != null || useDefaultDataSource != null;
        if (support) {
            return new Strategy() {
                @Override
                public boolean isUseDefaultDataSource() {
                    return useDefaultDataSource != null;
                }

                @Override
                public boolean isFallbackDefault() {
                    return useDataSource != null && useDataSource.fallbackDefault();
                }

                @Override
                public String getDataSourceId() {
                    return useDataSource == null ? null : useDataSource.value();
                }

                @Override
                public String toString() {
                    return "Annotation Strategy(" + (useDataSource != null ? useDataSource : useDefaultDataSource) + ")";
                }

                @Override
                public String getDatabase() {
                    return useDataSource == null ? null : StringUtils.isEmpty(useDataSource.database()) ? null : useDataSource.database();
                }
            };
        }
        return 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