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

时间:2014-09-22 15:23:20

标签: java spring spring-integration spring-el

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

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

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

我正试图找到一种方法来过滤掉大小为0但不为null的组。 有没有办法通过为@Cacheable使用params来做到这一点?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:17)

像这样的东西

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

答案 1 :(得分:2)

unless = "#result==null or #result.isEmpty()"对我有用。

答案 2 :(得分:0)

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

@Cacheable(value = "myCache", unless = "#result == null", key = "@myDao.cacheKey(#id, #languageCode)")
public Optional<MyDTO> getMyStuff(int id, String languageCode) {
... }