我在用
@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。不确定具体如何做。
1条答案
按热度按时间ulydmbyx1#
我相信“dey”是正确的。
我怀疑您遇到的问题是您没有使用Spring框架的
@EnableCaching
注解(Javadoc)显式地启用缓存。即使使用Sping Boot 的 * 自动配置 *,特别是当使用Ehcache作为Spring Framework的Cache Abstraction中的缓存提供程序时,您仍然需要显式启用缓存,如文档中所述。
Ehcache是受支持的缓存提供程序(以及在核心Spring框架中),并且Sping Boot 确实为该提供者提供了 * 自动配置 * 逻辑(通过JCache API)。但是,使用Sping Boot 时,显式
CacheManager
bean声明(对于 Ehcache)是非必需的,只有@EnableCaching
注解是必需的(只要 Ehcache 和spring-boot-starter-cache
都在你的应用程序类路径上,正如你所指出的):只有在以下情况下才需要显式的
CacheManager
bean:1)您没有使用Sping Boot ,或者2)Spring不支持提供者作为Spring的缓存抽象中的缓存提供者,在这种情况下,您需要自己实现Spring的Cache and
CacheManager 'SPI,以用于不受支持的(OOTB)提供者。