可以 Spring LdapTemplate 流式传输结果



我正在尝试查询所有人员对象的活动目录。有超过 700,000 个结果太多了,无法读入List。我目前的解决方案是使用分页来获取所有结果,但我宁愿使用 Java-8 Stream-API 来获取它们。不幸的是,我没有在LdapTemplate上找到任何返回Stream对象的方法。

我知道这可以返回所有结果:

public List<LdapPerson> findAll() {
        return ldapTemplate.search("","(objectClass=person)", mapper);
    }

但我正在寻找的是可以返回的东西:

public Stream<LdapPerson> findAll(){
   return ldaptemplate.?????????;
}

谁能指出我正确的方向?

不,LdapTemplate不提供直接从搜索的元素返回Stream<T>的方法。但是,由于该方法LdapTemplate::search返回一个List<T>,因此您可以使用collection.stream()方法的简单调用来使用转换为Stream<T>的任何Collection<T>的特征:

public Stream<LdapPerson> findAll() {
    return ldapTemplate.search("", "(objectClass=person)", mapper).stream();
}

最新更新