private void initCacheConfig() {
        if (Objects.isNull(selectorMatchConfig) || Objects.isNull(ruleMatchConfig)) {
            ShenyuConfig shenyuConfig = SpringBeanUtils.getInstance().getBean(ShenyuConfig.class);
            selectorMatchConfig = shenyuConfig.getSelectorMatchCache();
            ruleMatchConfig = shenyuConfig.getRuleMatchCache();
        }
        if (Objects.isNull(selectorTrie) || Objects.isNull(ruleTrie)) {
            selectorTrie = SpringBeanUtils.getInstance().getBean(TrieCacheTypeEnum.SELECTOR.getTrieType());
            ruleTrie = SpringBeanUtils.getInstance().getBean(TrieCacheTypeEnum.RULE.getTrieType());
        }
    }
Process the Web request and (optionally) delegate to the next
{@code ShenyuPlugin} through the given {@link ShenyuPluginChain}.

@param exchange the current server exchange
@param chain    provides a way to delegate to the next plugin
@return {@code Mono<Void>} to indicate when request processing is complete
shenyu-plugin/shenyu-plugin-base/src/main/java/org/apache/shenyu/plugin/base/AbstractShenyuPlugin.java