java如果我有@EnableCaching,为什么没有CacheManager缓存就不能工作?
我正在学习缓存,文章说,thay@EnableCaching
足以让Spring自动创建一个简单的缓存管理器。
但是如果我对一个方法做一个简单的测试,就会弹出异常
方法
@Cacheable("example")
public DishResponseDTO getOne(int dishId) {
var dish = dishRepository.findById(dishId)
.orElseThrow(() -> new EntityNotFoundException(dishtErrorMessage(dishId)));
return DishMapper.toDishResponseDTO(dish);
}
试验
@Test
@Transactional
public void get() {
System.out.println(dishService.getOne(1));
System.out.println(dishService.getOne(2));
System.out.println(dishService.getOne(1));
}
例外情况:
java.lang.IllegalArgumentException: Cannot find cache named 'example' for Builder[public com.topjava.graduation.restaurant.dto.DishResponseDTO com.topjava.graduation.restaurant.service.DishService.getOne(int)] caches=[example] | key='' | keyGenerator='' | cacheManager='' | cacheResolver='' | condition='' | unless='' | sync='false'
当我添加一个简单的缓存管理器时,异常消失,一切正常
@EnableCaching
@Configuration
public class CacheConfig {
@Bean
public CacheManager cacheManager() {
SimpleCacheManager cacheManager = new SimpleCacheManager();
List<Cache> caches = new ArrayList<Cache>();
caches.add(new ConcurrentMapCache("dto"));
cacheManager.setCaches(caches);
return cacheManager;
}
}
}
如果我删除@EnableCaching
,则不会有任何更改。因此,问题是如果没有创建简单的缓存管理器,@EnableCaching
注释的意义是什么
共 (0) 个答案