2016-04-25 18 views
3

考慮一個服務類,它可以插入和檢索對象並使用Spring緩存抽象,如何以返回可選方式註釋方法?處理Java 8使用Spring緩存可選

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期望一個Optional可能包含一個Item實例。

+2

我們不支持'可選'。我想我們可以做到這一點,請創建一個問題。 –

+0

感謝您的回覆。我剛剛創建了https://jira.spring.io/browse/SPR-14230 – andrucz

+0

哇,我現在正在度假,而且Juergen已經實現了它。這很快;-) –

回答

2

只是對評論的後續行動給出了一個明確的答案。我們做Spring框架4.3 RC2