Spring可缓存 - 使用SpEL过滤掉空集合

问题描述 投票:5回答:3

我想知道有没有办法使用SpEL来过滤掉像空集合这样的值。

我的缓存当前过滤掉空值:

  @Cacheable(value = "groupIdToGroupNames",unless = "#result == null")
   public Map<Long, Collection<String>> findAllBySearchCustomerKey(final long groupId) {
    return idToNameClient.findAllGroupMembersById(groupId);
   } 

我试图找到一种方法来筛选出大小为0但不为null的组。有没有办法通过使用@Cacheable的参数来做到这一点?

任何帮助将非常感激。

java spring spring-integration spring-el
3个回答
17
投票

像这样的东西

unless = "#result==null or #result.size()==0"

3
投票

unless = "#result==null or #result.isEmpty()"为我工作。


0
投票

只是为了展示一个例子(Artem Bilan的回答是有效的)。我的函数可以返回Optional.ofEmpty或者我的对象的Optional

@Cacheable(value = "myCache", unless = "#result == null", key = "@myDao.cacheKey(#id, #languageCode)")
public Optional<MyDTO> getMyStuff(int id, String languageCode) {
... }
© www.soinside.com 2019 - 2024. All rights reserved.