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

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

1. Введение

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

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

2. Объявление условий

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

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

1. Обзор

В этой быстрой статье мы рассмотрим исключение HttpMediaTypeNotAcceptableException и поймем, в каких случаях мы можем с ним столкнуться.

2. Проблема

При реализации конечной точки API с помощью Spring нам обычно необходимо указывать типы потребляемых/производимых носителей (с помощью параметров потребления и производства ). Это сужает возможные форматы, которые API будет возвращать клиенту для этой конкретной операции.

HTTP также имеет специальный заголовок «Accept» , который используется для указания типов мультимедиа, которые клиент распознает и может принять. Проще говоря, сервер отправит обратно представление ресурса, используя один из типов мультимедиа, запрошенных клиентом.

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

1. Обзор

Как правило, когда нам нужно проверить пользовательский ввод, Spring MVC предлагает стандартные предопределенные валидаторы.

Однако, когда нам нужно проверить более конкретный тип ввода, у нас есть возможность создать собственную пользовательскую логику проверки.

В этом уроке мы сделаем именно это; мы создадим настраиваемый валидатор для проверки формы с полем номера телефона, а затем покажем настраиваемый валидатор для нескольких полей.

В этом руководстве основное внимание уделяется Spring MVC. В нашей статье под названием « Проверка в Spring Boot » описывается, как создавать собственные проверки в Spring Boot.

2. Настройка

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

1. Введение

В Spring MVC у нас есть много способов установить код состояния HTTP-ответа .

В этом коротком руководстве мы увидим самый простой способ: использование аннотации @ResponseStatus .

2. О методах контроллера

Когда конечная точка успешно возвращается, Spring предоставляет ответ HTTP 200 (ОК).

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

1. Обзор

RxJava — популярная библиотека для создания асинхронных программ и программ, основанных на событиях. Она черпает вдохновение из основных идей, выдвинутых инициативой Reactive Extensions .

Vert.x , проект под эгидой Eclipse , предлагает несколько компонентов, разработанных с нуля для полного использования реактивной парадигмы.

При совместном использовании они могут стать надежной основой для любой Java -программы, которая должна быть реактивной.

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

Мы будем использовать данные, опубликованные из общедоступного REST API www.metaweather.com — для расчета продолжительности дневного света и RxJava с Vert.x , чтобы сделать это чисто реактивным способом. ``

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

1. Введение

Как мы знаем, файл .gitignore предотвращает добавление неотслеживаемых файлов в индекс git в будущем. Другими словами, любые файлы, которые в настоящее время отслеживаются, по-прежнему будут отслеживаться git.

В этом руководстве мы рассмотрим различные возможности удаления отслеживаемых файлов из индекса git после их добавления в .gitignore .

2. Удаление одного файла

Чтобы удалить один файл, мы сначала должны добавить имя файла в .gitignore, а затем запустить команду git rm , а затем выполнить коммит:

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

1. Обзор

В этой статье мы рассмотрим различные способы извлечения всех вложенных ключей из JSON с помощью JsonNode . Мы стремимся пройти через строку JSON и собрать имена ключей в списке.

2. Введение

Библиотека Джексона использует древовидную модель для представления данных JSON . Модель дерева предоставляет нам эффективный способ взаимодействия с иерархическими данными.

Объекты JSON представлены в виде узлов в модели дерева . Это упрощает выполнение операций CRUD с содержимым JSON.

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

1. Весна и Ява

>> Руководство по переходу на JDK 17 [ docs.oracle.com ]

Подробное руководство с указанием значительных изменений и улучшений, внесенных в JDK 17 и предыдущих версиях !

>> Несколько приложений Spring Boot в одном проекте [ blog.frankel.ch ]

Вы когда-нибудь задумывались, как поддерживать несколько приложений Spring Boot в одном исходном коде ? Тогда это практическое руководство для вас.

>> Как интернационализировать приложение Spring Boot [ Reflectoring.io ]

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

1. Введение

В этой статье мы увидим, как настроить Kafka Streams с помощью Spring Boot. Kafka Streams — это клиентская библиотека, созданная поверх Apache Kafka. ^ Он позволяет обрабатывать неограниченный поток событий декларативным образом.

Некоторыми реальными примерами потоковой передачи данных могут быть данные датчиков, потоки событий фондового рынка и системные журналы. В этом уроке мы создадим простое приложение для потоковой передачи подсчета слов. Давайте начнем с обзора Kafka Streams, а затем настроим пример вместе с его тестами в Spring Boot.

2. Обзор

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

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

1. Обзор

В этом руководстве мы познакомимся с различными способами создания PDF-файла из документации Swagger API. Чтобы ознакомиться со Swagger, обратитесь к нашему руководству по настройке Swagger 2 с помощью Spring REST API .

2. Создайте PDF с помощью плагинов Maven

Первое решение для создания PDF-файла из документации Swagger API основано на наборе подключаемых модулей Maven. При таком подходе мы получим файл PDF при создании проекта Java.

Шаги для создания желаемого PDF-файла включают в себя применение нескольких подключаемых модулей в определенном порядке во время сборки Maven . Плагины должны быть настроены на выбор ресурсов и распространение выходных данных предыдущих фаз в качестве входных данных следующей фазы. Итак, давайте посмотрим, как работает каждый из них.