首页 > 解决方案 > 当 spring 调用 get(Object o, ClassaClass) 使用@Cacheable 时的函数

问题描述

我在springboot中使用@Cacheable并实现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()

但我留下其他两个函数返回 null

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

现在@Cacheable 工作正常,但是当spring 调用这两个函数时,是否可以让它们返回null?

标签: javaspringcaching

解决方案


是的,这是个问题。您未能实现接口。这违反了https://en.wikipedia.org/wiki/Liskov_substitution_principle(“SOLID ”中的“L”)。

它为后续开发提供了一个陷阱,接口的使用者必须知道在底层实现中要避免什么。

简而言之,你没有满足接口的约定。


推荐阅读