Spring : @EnableCaching 的工作原理

237 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作。

  1. 开发人员使用注解@EnableCaching;

  2. 注解@EnableCaching导入CachingConfigurationSelector;

  3. hingConfigurationSelector根据注解@EnableCaching 属性AdviceMode mode决定引入哪些配置类;

1.PROXY : AutoProxyRegistrar,ProxyCachingConfiguration;

2.ASPECTJ : AspectJCachingConfiguration;

本文以mode=PROXY为例;

  1. CachingConfigurationSelector导入AutoProxyRegistrar会确保容器中存在一个自动代理创建器(APC);

用于确保目标bean需要被代理时有可用的代理创建器;

  1. ProxyCachingConfiguration向容器定义如下基础设施bean:

1称为org.springframework.cache.config.internalCacheAdvisor类型为BeanFactoryCacheOperationSourceAdvisor的bean;

2称为cacheOperationSource类型为CacheOperationSource的bean; 用于获取方法调用时最终应用的Spring Cache注解的元数据;

3称为cacheInterceptor类型为CacheInterceptor的bean; 一个MethodInterceptor,包裹在目标bean外面用于操作Cache的AOP Advice。

  1. AutoProxyRegistrar在容器启动阶段对每个bean创建进行处理,如果该bean中有方法应用了Spring Cache注解,为其创建相应的代理对象,包裹上面定义的BeanFactoryCacheOperationSourceAdvisor bean;

  2. Spring Cache注解的bean方法被调用,其实调用首先发生在代理对象上,先到达cacheInterceptor,然后才是目标bean方法的调用; cacheInterceptor既处理调用前缓存操作,也处理调用返回时缓存操作; ———————————————— 版权声明:本文为CSDN博主「安迪源文」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/andy_zhang2…