когда пружина вызывает функцию get (Object o, Class <T>aClass) при использовании @Cacheable - PullRequest
1 голос
/ 09 мая 2019

Я использую @Cacheable в springboot и реализую интерфейс Cache, перезаписывая следующую функцию:

 public String getName()
 public Object getNativeCache()
 public ValueWrapper get(Object key)
 public void put(Object key, Object value)
 public ValueWrapper putIfAbsent(Object key, Object value)
 public void evict(Object key)
 public void clear()

но я оставляю две другие функции, возвращающие ноль

public <T> T get(Object o, Class<T> aClass)
public <T> T get(Object o, Callable<T> callable)

Теперь @Cacheable работает нормально, но когда spring вызовет две функции и все будет нормально, если они вернут null?

Ответы [ 2 ]

1 голос
/ 09 мая 2019

Да, это проблема.Вы не смогли реализовать интерфейс.Это нарушает https://en.wikipedia.org/wiki/Liskov_substitution_principle («L» в «SOLID»).

Это представляет ловушку для последующей разработки, когда потребители интерфейса должны знать, чего следует избегать в базовой реализации.

Короче говоря, вы не выполнили контракт интерфейса.

0 голосов
/ 09 мая 2019

Я не знаю, мой ответ правильный или нет, но если вы сделаете так, он будет работать.Создайте CacheConfig.java

  @Configuration
  @EnableCaching
  public class CacheConfig {

  @Bean
  public CacheManager cacheManager() {
    SimpleCacheManager cacheManager = new SimpleCacheManager();
    cacheManager.setCaches(Arrays.asList(new 
    ConcurrentMapCache(Constants.CATEGORYCACHE));
    return cacheManager;
  }

После этого вы можете использовать этот метод уровня Аннотация в вашем ServiceImpl.class

  @Cacheable(value=Constants.CATEGORYCACHE)
  public List<Category> getCategoryList(Category category) {
    return categoryDAO.getCategoryList(category);
  }

 @CacheEvict(value=Constants.CATEGORYCACHE,allEntries=true)
 public void deleteCategory(Category category) {
    categoryDAO.deleteCategory(category);
 }

И посмотреть официальный документ SpringBoot здесь: https://howtodoinjava.com/spring-boot2/spring-boot-cache-example/ введите описание ссылки здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...