class SpringConfigProvider extends ConfigProvider implements ApplicationContextAware {
    private ApplicationContext applicationContext;

    public SpringConfigProvider() {
        super();
        encoderParser = new DefaultSpringEncoderParser();
        keyConvertorParser = new DefaultSpringKeyConvertorParser();
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext = applicationContext;
    }

    @Override
    protected void doInit() {<FILL_FUNCTION_BODY>}

    @Override
    public CacheContext newContext(CacheManager cacheManager) {
        return new SpringCacheContext(cacheManager, this, globalCacheConfig, applicationContext);
    }

    @Autowired(required = false)
    @Override
    public void setEncoderParser(EncoderParser encoderParser) {
        super.setEncoderParser(encoderParser);
    }

    @Autowired(required = false)
    @Override
    public void setKeyConvertorParser(KeyConvertorParser keyConvertorParser) {
        super.setKeyConvertorParser(keyConvertorParser);
    }

    @Autowired(required = false)
    @Override
    public void setMetricsCallback(Consumer<StatInfo> metricsCallback) {
        super.setMetricsCallback(metricsCallback);
    }

}

        if (encoderParser instanceof ApplicationContextAware) {
            ((ApplicationContextAware) encoderParser).setApplicationContext(applicationContext);
        }
        if (keyConvertorParser instanceof ApplicationContextAware) {
            ((ApplicationContextAware) keyConvertorParser).setApplicationContext(applicationContext);
        }
        super.doInit();
    
<methods>public void <init>() ,public com.alicp.jetcache.anno.support.CacheNameGenerator createCacheNameGenerator(java.lang.String[]) ,public void doShutdown() ,public com.alicp.jetcache.template.CacheBuilderTemplate getCacheBuilderTemplate() ,public com.alicp.jetcache.anno.support.GlobalCacheConfig getGlobalCacheConfig() ,public com.alicp.jetcache.anno.support.CacheContext newContext(com.alicp.jetcache.CacheManager) ,public Function<java.lang.Object,java.lang.Object> parseKeyConvertor(java.lang.String) ,public Function<byte[],java.lang.Object> parseValueDecoder(java.lang.String) ,public Function<java.lang.Object,byte[]> parseValueEncoder(java.lang.String) ,public void setEncoderParser(com.alicp.jetcache.anno.support.EncoderParser) ,public void setGlobalCacheConfig(com.alicp.jetcache.anno.support.GlobalCacheConfig) ,public void setKeyConvertorParser(com.alicp.jetcache.anno.support.KeyConvertorParser) ,public void setMetricsCallback(Consumer<com.alicp.jetcache.support.StatInfo>) <variables>private com.alicp.jetcache.template.CacheBuilderTemplate cacheBuilderTemplate,protected com.alicp.jetcache.anno.support.EncoderParser encoderParser,protected com.alicp.jetcache.anno.support.GlobalCacheConfig globalCacheConfig,protected com.alicp.jetcache.anno.support.KeyConvertorParser keyConvertorParser,private static final Logger logger,private Consumer<com.alicp.jetcache.support.StatInfo> metricsCallback