Spring Boot 在Sping Boot 应用程序中示例化CacheManager bean

gojuced7  于 2023-03-02  发布在  Spring
关注(0)|答案(1)|浏览(237)

我在用

@Service
public class Service{
@Autowired  
private CacheManager cacheManager;
}

我在build. gradle文件中包含了org. ehcache:ehcache和spring-boot-starter-cache库。在运行应用程序时,我收到错误:
Field cacheManager required a bean of type org.springframework.cache.CacheManager that could not be found.
我不知道如何着手解决这个错误

    • 我的想法**

看起来我需要声明一个用@Configuration和方法@Bean注解的类,它返回一个CacheManager类型的对象。我在这里使用了EhCache。不确定具体如何做。

ulydmbyx

ulydmbyx1#

我相信“dey”是正确的。
我怀疑您遇到的问题是您没有使用Spring框架的@EnableCaching注解(Javadoc)显式地启用缓存。
即使使用Sping Boot 的 * 自动配置 *,特别是当使用Ehcache作为Spring Framework的Cache Abstraction中的缓存提供程序时,您仍然需要显式启用缓存,如文档中所述。

Ehcache是受支持的缓存提供程序(以及在核心Spring框架中),并且Sping Boot 确实为该提供者提供了 * 自动配置 * 逻辑(通过JCache API)。但是,使用Sping Boot 时,显式CacheManager bean声明(对于 Ehcache)是必需的,只有@EnableCaching注解是必需的(只要 Ehcachespring-boot-starter-cache都在你的应用程序类路径上,正如你所指出的):

@Configuration
@EnableCaching
class MySpringBootApplicationConfiguration {

  // your application managed bean declarations here

}

只有在以下情况下才需要显式的CacheManager bean:1)您没有使用Sping Boot ,或者2)Spring不支持提供者作为Spring的缓存抽象中的缓存提供者,在这种情况下,您需要自己实现Spring的Cache and CacheManager 'SPI,以用于不受支持的(OOTB)提供者。

相关问题