java - 使用 Spring 缓存处理 Java 8 Optional

标签 java spring spring-cache

考虑一个可以插入和检索对象并使用 Spring 缓存抽象的服务类,我如何以返回 Optional 的方式注释方法?

class MyServiceImpl implements MyService {

    private static final String CACHE_NAME = "itemCache";      

    @Override
    @Cacheable(CACHE_NAME)
    public Optional<Item> findById(Long id) {
        // access the repository to retrieve the item
    }

    @Override
    @CachePut(cacheNames = CACHE_NAME, key = "#item.id")
    public Item insertItem(Item item) {
        ...
    }

}

在上面的例子中,一个ClassCastException被抛出是因为insertItem在缓存中放入了一个Item实例,并且findById 需要一个可能包含 Item 实例的 Optional

最佳答案

只是对评论的跟进,以给出明确的答案。我们从 Spring Framework 4.3 RC2 开始做

关于java - 使用 Spring 缓存处理 Java 8 Optional,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36844270/

相关文章:

java - 使用 Spring 和 Jdbc 访问数据库

java - RedisTemplate getExpire() 在 Springcache 中返回意外值

java - 避免由于 Log4j 中的默认行为而多次记录同一消息

java - 为什么说创建线程很昂贵?

java - 更新了 Android Studio,Logcat 不再在一台 Android 设备上运行,但仍可在我的另一台 Android 设备上运行

java - 为什么我无法对内存数据库进行回滚?

java - jpa 2和hibernate一起+hibernate自定义类型+spring

java - 对于(未)验证的请求绕过 @Cacheable

java.lang.NoClassDefFoundError : net/sf/ehcache/concurrent/ReadWriteLockSync

java - 如何在java中听(语音)文本