Может ли Spring LdapTemplate передавать результаты? - PullRequest
3 голосов
/ 10 июня 2019

Я пытаюсь запросить активный каталог для ВСЕХ объектов человека.Есть более 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 Ответ

1 голос
/ 11 июня 2019

Нет, 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...