Spring LdapTemplate可以流结果吗?

时间:2019-06-10 17:02:52

标签: java spring-boot java-8 java-stream spring-ldap

我正在尝试在活动目录中查询所有人员对象。有超过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.?????????;
}

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

否,LdapTemplate没有提供直接从搜索到的元素中返回Stream<T>的方法。但是,由于方法LdapTemplate::search返回了List<T>,因此您可以使用 any Collection<T>的特征,该特征可以使用以下命令转换为Stream<T> collection.stream()方法的简单调用:

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