TGViewer
Java Portal | Программирование Java Portal | Программирование @java_iibrary · 11.6K subscribers
Post #2055 2.23K
Spring Boot: чтобы сервисы возвращали пагинированный ответ, а не огромный список, можно использовать Page<T> и Pageable.

Без пагинации:

[
{ "id": 1, "name": "John" },
{ "id": 2, "name": "Lia" }
...
]


С пагинацией:

{
"content": [
{ "id": 1, "name": "John" },
{ "id": 2, "name": "Lia" }
...
],
"page": {
"size": 20,
"number": 0,
"totalElements": 50213,
"totalPages": 2511
}
}


Вместо того чтобы напрямую возвращать Page<T>, можно вернуть кастомный paged response DTO, чтобы не светить типы фреймворка в API.

record PagedResponse<T>(
List<T> items,
int page,
int size,
long totalElements,
int totalPages
) {}


И метод контроллера будет выглядеть примерно так:

@GetMapping
public PagedResponse<User> getUsers(Pageable pageable) {
Page<User> page = repository.findAll(pageable);

return new PagedResponse<>(
page.getContent(),
page.getNumber(),
page.getSize(),
page.getTotalElements(),
page.getTotalPages()
);
}


👉 Java Portal
  • 👍 9
  • ❤ 2
More from @java_iibrary
  1. Sep 27, 2026Java-разработчики, CopyOnWriteArrayList создаёт копию всего внутреннего массива при каждом…
  2. Sep 27, 2026Java-разработчики, ConcurrentHashMap потокобезопасен. Но он не блокирует всю коллекцию при…
  3. Sep 26, 2026Во многих приложениях есть такой эндпоинт. Фронтенд удаляет JWT после того, как пользовате…
  4. Sep 26, 2026Java: используйте Deque вместо Stack для работы по принципу LIFO («последним пришёл — перв…
  5. Sep 25, 2026Каждый Java-разработчик использует HashMap. Но задумывались ли вы… Почему его ёмкость всег…
  6. Sep 25, 2026Бесплатные ресурсы для изучения Java Конспект Effective Java — HugoMatilla/Effective-JAVA-…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →