- 开发人员使用注解
@EnableCaching; - 注解
@EnableCaching导入CachingConfigurationSelector; CachingConfigurationSelector根据注解@EnableCaching属性AdviceMode mode决定引入哪些配置类;
1.PROXY:AutoProxyRegistrar,ProxyCachingConfiguration;
2.ASPECTJ:AspectJCachingConfiguration;本文以
mode=PROXY为例;CachingConfigurationSelector导入AutoProxyRegistrar会确保容器中存在一个自动代理创建器(APC);- 用于确保目标
bean需要被代理时有可用的代理创建器;
- 用于确保目标
ProxyCachingConfiguration向容器定义如下基础设施bean:- 名称为
org.springframework.cache.config.internalCacheAdvisor类型为BeanFactoryCacheOperationSourceAdvisor的bean; - 名称为
cacheOperationSource类型为CacheOperationSource的bean;- 用于获取方法调用时最终应用的
Spring Cache注解的元数据;
- 用于获取方法调用时最终应用的
- 名称为
cacheInterceptor类型为CacheInterceptor的bean;- 一个
MethodInterceptor,包裹在目标bean外面用于操作Cache的AOP Advice。
- 一个
- 名称为
AutoProxyRegistrar在容器启动阶段对每个bean创建进行处理,如果该bean中有方法应用了Spring Cache注解,为其创建相应的代理对象,包裹上面定义的BeanFactoryCacheOperationSourceAdvisor bean;- 使用了
Spring Cache注解的bean方法被调用,其实调用首先发生在代理对象上,先到达cacheInterceptor,然后才是目标bean方法的调用;cacheInterceptor既处理调用前缓存操作,也处理调用返回时缓存操作;
Spring : @EnableCaching 的工作原理
最新推荐文章于 2024-05-13 19:34:12 发布
本文详细介绍了Spring Cache的启动配置过程。通过@EnableCaching注解激活CachingConfigurationSelector选择器,进而根据不同的模式引入必要的配置类。以PROXY模式为例,讲解了如何通过AutoProxyRegistrar确保容器中存在自动代理创建器,并定义了多个基础设施bean,如内部CacheAdvisor、CacheOperationSource等。最终通过AutoProxyRegistrar为带有Spring Cache注解的方法创建代理对象。
784

被折叠的 条评论
为什么被折叠?



