Spring : @EnableCaching 的工作原理

本文详细介绍了Spring Cache的启动配置过程。通过@EnableCaching注解激活CachingConfigurationSelector选择器,进而根据不同的模式引入必要的配置类。以PROXY模式为例,讲解了如何通过AutoProxyRegistrar确保容器中存在自动代理创建器,并定义了多个基础设施bean,如内部CacheAdvisor、CacheOperationSource等。最终通过AutoProxyRegistrar为带有Spring Cache注解的方法创建代理对象。
  1. 开发人员使用注解@EnableCaching
  2. 注解@EnableCaching导入CachingConfigurationSelector;
  3. CachingConfigurationSelector根据注解@EnableCaching 属性AdviceMode mode决定引入哪些配置类;
    1.PROXY : AutoProxyRegistrar,ProxyCachingConfiguration
    2. ASPECTJ : AspectJCachingConfiguration

    本文以mode=PROXY为例;

  4. CachingConfigurationSelector导入AutoProxyRegistrar会确保容器中存在一个自动代理创建器(APC);
    • 用于确保目标bean需要被代理时有可用的代理创建器;
  5. ProxyCachingConfiguration向容器定义如下基础设施bean:
    1. 名称为org.springframework.cache.config.internalCacheAdvisor类型为BeanFactoryCacheOperationSourceAdvisorbean;
    2. 名称为cacheOperationSource类型为CacheOperationSourcebean;
      • 用于获取方法调用时最终应用的Spring Cache注解的元数据;
    3. 名称为cacheInterceptor类型为CacheInterceptorbean;
      • 一个MethodInterceptor,包裹在目标bean外面用于操作CacheAOP Advice
  6. AutoProxyRegistrar在容器启动阶段对每个bean创建进行处理,如果该bean中有方法应用了Spring Cache注解,为其创建相应的代理对象,包裹上面定义的BeanFactoryCacheOperationSourceAdvisor bean;
  7. 使用了Spring Cache注解的bean方法被调用,其实调用首先发生在代理对象上,先到达cacheInterceptor,然后才是目标bean方法的调用;
    • cacheInterceptor既处理调用前缓存操作,也处理调用返回时缓存操作;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值