Я пытаюсь заменить старый:
@Component
public interface MyEntityRepository extends JpaRepository<MyEntity, Integer> {
@QueryHints({@QueryHint(name = CACHEABLE, value = "true")})
MyEntity findByName(String name);
}
:
@Component
public interface MyEntityRepository extends JpaRepository<MyEntity, Integer> {
@Cacheable(value = "entities")
MyEntity findByName(String name);
}
Поскольку я хочу использовать расширенные функции кэширования, такие как кеширование нулевых значений и т.д.
Чтобы сделать это, я выполнил Spring учебник https://spring.io/guides/gs/caching/
Если я не аннотирую приложение Application.java, кеширование просто не работает.
Но если я добавлю @EnableCaching
и CacheManager bean:
package my.application.config;
@EnableWebMvc
@ComponentScan(basePackages = {"my.application"})
@Configuration
@EnableCaching
public class Application extends WebMvcConfigurerAdapter {
@Bean
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager("entities");
}
// ...
}
При запуске появляется следующая ошибка:
java.lang.IllegalStateException: не указан CacheResolver, и не найден bean типа CacheManager. Зарегистрируйте CacheManager bean или удалите аннотацию @EnableCaching из вашей конфигурации
Я получаю ту же ошибку, если я заменил My CacheManager bean на CacheResolver bean как:
@Bean
public CacheResolver cacheResolver() {
return new SimpleCacheResolver(new ConcurrentMapCacheManager("entities"));
}
Я что-то пропустил?