Перейти к основному содержимому

· 2 мин. чтения

1. Обзор

Нашим приложениям часто приходится обрабатывать загрузку файлов через HTTP-запрос. Начиная с Spring 5, теперь мы можем сделать эти запросы реактивными.

Добавленная поддержка реактивного программирования позволяет нам работать неблокирующим образом, используя небольшое количество потоков и противодавление .

В этой статье мы будем использовать WebClient — неблокирующий реактивный HTTP-клиент — чтобы проиллюстрировать, как загрузить файл. WebClient является частью библиотеки реактивного программирования под названием Project Reactor . Мы рассмотрим два разных подхода к загрузке файла с помощью BodyInserter .

2. Загрузка файла с помощью WebClient

Чтобы использовать WebClient , нам нужно добавить в наш проект зависимость spring-boot-starter-webflux :

· 6 мин. чтения

1. Введение

В этом руководстве мы рассмотрим производительность двух методов Java: System.arraycopy() и Arrays.copyOf() . Сначала мы проанализируем их реализации. Во-вторых, мы запустим несколько тестов, чтобы сравнить их среднее время выполнения.

2. Производительность System.arraycopy()

System.arraycopy() копирует содержимое массива из исходного массива, начиная с указанной позиции, в указанную позицию в целевом массиве. Кроме того, перед копированием JVM проверяет, совпадают ли исходный и конечный типы.

При оценке производительности System.arraycopy() нужно помнить, что это нативный метод. Нативные методы реализованы в платформенно-зависимом коде (обычно C) и доступны через вызовы JNI.

· 7 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим некоторые вспомогательные инструменты для JPA. Мы сосредоточимся на подключаемых модулях, доступных для двух самых популярных IDE: IntelliJ IDEA и Eclipse .

2. Поддержка JPA в IntelliJ IDEA и Eclipse

JPA — это наиболее широко используемая спецификация для работы с реляционными базами данных в приложениях Java. По сути, JPA определяет все аспекты реализации, от аннотаций до правил обработки данных.

Обычно мы работаем не только с сущностями JPA. В дополнение к чистому коду, связанному с ORM, нам также могут понадобиться такие вещи, как система управления версиями базы данных, оптимизация запросов SQL/JPQL/HQL, интеграция с контейнерами IoC и т. д. Вот где плагины становятся очень полезными. Они могут поддерживать обратный инжиниринг базы данных, генерацию схемы, генерацию сценариев миграции или создание каркасов репозиториев Spring Data JPA.

· 11 мин. чтения

1. Обзор

В этой статье мы рассмотрим работу с иерархиями классов в Джексоне.

Двумя типичными вариантами использования являются включение метаданных подтипа и игнорирование свойств, унаследованных от суперклассов. Мы собираемся описать эти два сценария и пару обстоятельств, когда требуется особое отношение к подтипам.

2. Включение информации о подтипе

Есть два способа добавить информацию о типе при сериализации и десериализации объектов данных, а именно глобальная типизация по умолчанию и аннотации для каждого класса.

· 9 мин. чтения

1. Введение

Список контроля доступа ( ACL) — это список разрешений, прикрепленных к объекту. ACL указывает, какие удостоверения предоставляются, какие операции над данным объектом.

Spring Security Access Control Listэто компонент Spring , поддерживающий безопасность объектов домена. Проще говоря, Spring ACL помогает определить разрешения для конкретного пользователя/роли в одном объекте домена, а не повсеместно, на типичном уровне для каждой операции.

Например, пользователь с ролью администратора может видеть ( ЧИТАТЬ) и редактировать ( ЗАПИСАТЬ) все сообщения в центральном ящике уведомлений , но обычный пользователь может только видеть сообщения, относиться к ним и не может редактировать. Между тем, другие пользователи с ролью Редактор могут видеть и редактировать определенные сообщения.

Следовательно, разные пользователи/роли имеют разные разрешения для каждого конкретного объекта. В этом случае Spring ACL способен выполнить эту задачу. В этой статье мы рассмотрим, как настроить базовую проверку разрешений с помощью Spring ACL .

2. Конфигурация

· 3 мин. чтения

1. Обзор

В некоторых ситуациях нам нужно создавать классы Java, также называемые POJO , с использованием файлов JSON. Это возможно без написания всего класса с нуля с помощью удобной библиотеки jsonschema2pojo .

В этом руководстве мы увидим, как создать класс Java из объекта JSON с помощью этой библиотеки.

2. Настройка

Мы можем преобразовать объект JSON в класс Java, используя зависимость jsonschema2pojo-core :

· 6 мин. чтения

1. Обзор

В этом руководстве мы рассмотрим метод Stream::mapMulti, представленный в Java 16. Мы напишем простые примеры, иллюстрирующие его использование. В частности, мы увидим, что этот метод похож на Stream:: flatMap . Мы рассмотрим, при каких обстоятельствах мы предпочитаем использовать mapMulti , а не flatMap .

Обязательно ознакомьтесь с нашими статьями о Java Streams , чтобы глубже погрузиться в Stream API.

2. Подпись метода

Опустив подстановочные знаки, метод mapMulti можно записать более кратко:

· 3 мин. чтения

1. Введение

В этом кратком руководстве мы узнаем , как удалить повторяющиеся элементы из списка. Сначала мы будем использовать обычную Java, затем Guava и, наконец, решение на основе Java 8 Lambda.

Этот учебник является частью серии « Java — Back to Basic » здесь, на ForEach.

2. Удалите дубликаты из списка, используя обычную Java

Мы можем легко удалить повторяющиеся элементы из списка с помощью стандартной Java Collections Framework через Set :

· 4 мин. чтения

1. Обзор

В этом руководстве мы узнаем, как принудительно обновить локальный репозиторий Maven , если он поврежден. Для этого мы воспользуемся простым примером, чтобы понять, почему репозиторий может быть поврежден и как это исправить.

2. Предпосылки

Чтобы изучить и запустить команды из этого руководства, нам нужно использовать проект Spring Initializr и установить JDK и Maven.

3. Структура репозитория Maven

· 5 мин. чтения

1. Обзор

Unirest — это облегченная клиентская библиотека HTTP от Mashape. Наряду с Java он также доступен для Node.js, .Net, Python, Ruby и т. д.

Прежде чем мы начнем, обратите внимание, что здесь мы будем использовать mocky.io для всех наших HTTP-запросов.

2. Настройка Мавена

Для начала давайте сначала добавим необходимые зависимости: