由于找不到CacheAspectSupport,CacheAutoConfiguration无法正常工作

时间:2019-02-22 14:01:19

标签: spring-boot spring-cache

我正在使用springboot 2.1.1。 我通过@EnableCaching启用了缓存

已创建CacheManager,并且可以将其注入我的课程中。

一旦我添加了一个库https://github.com/MarcGiffing/bucket4j-spring-boot-starter 启动应用程序时出现错误:

java.lang.IllegalStateException: No CacheResolver specified, and no bean of type CacheManager found. Register a CacheManager bean or remove the @EnableCaching annotation from your configuration.
at org.springframework.cache.interceptor.CacheAspectSupport.afterSingletonsInstantiated(CacheAspectSupport.java:227)

经过大量调试后,我找不到原因以及库如何破坏CacheManager。

似乎未使用CacheAutoConfiguration弹簧类:

   CacheAutoConfiguration:
  Did not match:
     - @ConditionalOnBean (types: org.springframework.cache.interceptor.CacheAspectSupport; SearchStrategy: all) did not find any beans of type org.springframework.cache.interceptor.CacheAspectSupport (OnBeanCondition)
  Matched:
     - @ConditionalOnClass found required class 'org.springframework.cache.CacheManager' (OnClassCondition)

但是我在ProxyCachingConfiguration#L63中添加了一个断点,并创建了一个CacheInterceptor(CacheAspectSupport impl)实例。 我可以将其注入到我的Configuration类之一中。因此,Bean CacheAspectSupport似乎存在于应用程序上下文中。

那为什么CacheAutoConfiguration表示bean丢失了?

谢谢

1 个答案:

答案 0 :(得分:0)

我发现了原因。

添加库时,加载了@EnableCaching批注的我的Configuration类太晚了。

我添加了一个@AutoConfigureBefore(CacheAutoConfiguration.class),它现在可以正常工作。