Seap lib что это

от admin

Топ-10 библиотек Java, которые помогут сэкономить время

Для кого эта статья: кое-что будет интересно новичкам, которые изучают квест Java Syntax, но в основном изложенный материал лучше зайдёт тем, кто уже перевалил за экватор курса (разбирается с квестами Java Collections и Java Multithreading) и начинает интересоваться технологиями, выходящими за рамки Java Core.За время своего существования Java изрядно обросла библиотеками. Но как понять, какие из них стоит использовать, а какие — нет? Отделить зёрна от плевел вечно занятому разработчику крайне непросто. В этой статье Мартин Пацов (Martin Patsov), Full Stack Developer компании Dreamix, расскажет о своей любви к библиотекам с открытым исходным кодом (open source), и предложит вам те из них, которые считает особенно полезными. Быть иль не быть, вот в чём вопрос: Спасеньем обернётся иль провалом Та самая библиотека Java… Смелей! «СиньйОры» уже были там И опыт их тебе я передам. Пусть вас не вводит в заблуждение моё поэтическое отступление. Библиотек в Java действительно очень много, и разбираться с ними ох как непросто. Тем не менее, я их очень люблю. Меня даже можно назвать «библиотечным евангелистом» (под «евангелистом» в сфере ИТ понимают вовсе не составителя канонический евангелий, а того, кто профессионально пропагандирует ту или иную технологию. Не путайте с обычными пиарщиками: чаще всего ИТ-евангелист досконально разбирается в продвигаемой им технологии. — прим. ред.). Библиотеки — очень важная часть экосистемы open source. Вокруг них вырастают большие сообщества, которые их развивают и поддерживают. И это здорово. Главное достоинство библиотек в том, что они позволяют нам не изобретать велосипед всякий раз, когда мы пишем код. Используйте библиотеки — уже написанный для определённых задач код — как можно чаще! Вы сэкономите время. Серьезно, лучше потратить его на общение с семьей и друзьями.

В этой заметке я упомянул те Java-библиотеки, которые предпочитаю использовать в своей работе. Все они относятся к ПО с открытым исходным кодом. Выбирал я по принципу полезности, наличия хорошей документации и поддержки, а также регулярной обновляемости. Хочу ещё раз поставить акцент на том, что это — мой личный выбор, и он может существенно отличаться от вашего.

Фреймворк и библиотека в JavaScript: разница, основные элементы

При программировании разработчики используют не только свои знания, но и определенный набор инструментов выбранного языка. За счет них удается намного быстрее справиться с поставленными задачами. Некоторые инструменты помогают преимущественно новичкам, а какие-то задействуются опытными разрабами.

В JavaScript, как и в любом другом языке программирования, есть такие два понятия, как «фреймворки» и «библиотеки». Используя их в коддинге, становятся доступными решения большинства задач. Далее будут представлены все нужные фреймворки в JS, а также библиотеки, которые пригодятся каждому программисту.

Понятие фреймворка

«Framework» переводится с английского языка как «каркас» или «остов». Может выступать в качестве понятия «структура». Представляет собой некую заготовку или шаблон программного кода, который задействуется при коддинге.

Фреймворки – это платформы, применяемые при создании сайтов и программного обеспечения. Значительно упрощают процесс разработки. Включают в себя разнообразные функции и инструменты.

Говоря простым языком, frameworks – готовые решения тех или иных задач. Позволяют быстро не только коддить, но и осуществлять надстройку проекта. Знания, необходимые для применения данного функционала, минимальные.

Библиотека – расшифровка

Библиотека в простом, общепринятом обыденном понятии – это некое место, где хранится информация в том или ином виде. Преимущественно в материальном представлении:

  • книги;
  • журналы;
  • выписки;
  • документы.

В программировании библиотека выполняет аналогичную функцию. Это – своеобразный сборник классов, а также функций Java Script.

Библиотека – сборник подпрограмм и/или объектов, которые применяются при разработке программного обеспечения. Короткие, заранее подготовленные утилиты, применяется для решения конкретных (часто встречающихся на практике) задач.

Разница между библиотекой и framework

Framework и Library, согласно данным из Google – инструменты для коддинга. Готовые инструменты, которые помогают при решении многих задач в программировании и разработке. Но возникает вопрос – это одинаковые объекты или нет.

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

Если же говорить о том, как работают все фреймворки в JS, можно сделать вывод о том, что данный набор шаблонов опирается непосредственно на структуру приложения. Здесь не разработчик вызывает код фреймворка, а framework отвечает за вызов кода разраба и его последующее использование.

Основные Frameworks для программиста – с чем знакомиться в первую очередь

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

Frameworks в JS очень много. Они, как и libraries, постоянно пополняются. Поэтому, если хотите создавать интересные утилиты, обязательно изучить «базовые» фреймворки. Они будут представлены далее. В Google по соответствующей теме удастся найти немало полезной информации.

Angular

Первый вариант, достойный внимания – это Angular. Технология JS для создания пользовательского интерфейса. Раньше поддерживался Google и частными компаниями. В 2016 году вышла новая версия фреймворка, которая значительно превосходила свою первоначальную разработку.

Angular 2 предусматривает:

  • улучшенную производительность для создания интерфейсов не только на веб-платформе, но и на мобильных устройствах;
  • компонентную архитектуру;
  • TypeScript на JS по умолчанию;
  • кроссплатформенность;
  • мощный функционал для создания пользовательского интерфейса.

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

Второй фреймворк, который в Google выводится как один из основных – это Vue.js. Относительно новый, так как стремительное развитие получил в 2021 году. Стал популярным на GitHub.

Он чем-то похож на React. Имеет виртуальный DOM, компоненты повторного использования (полезно при создании виджетов и полноценных веб-программ). Предусматривает задействование синтаксиса JSX для того, чтобы заниматься написаний функций рендеринга.

Vue.js оснащен поддержкой интеграции libraries и frameworks «в себя» без каких-то существенных трудностей. Легко осваивается на первоначальных порах изучения языка программирования.

Ember

Все фреймворки для JS можно отыскать в Google с подробными описаниями. Но изучать их предстоит поочередно, чтобы не запутаться.

Еще один интересный вариант – Ember.js. Это – front-end фреймворк, в основе которого лежит шаблон Model View ViewModel. Применяет во время работы стандартный конфигурационный подход, пользующийся спросом в серверных фреймворках типа Ruby.

Этот franmework включает в себя:

  • CLI – шаблоны каркасов утилит с поддержкой большого количества настраиваемых параметров;
  • Data — библиотека, необходимая для сохранения информации, поддерживающая настройку для функционирования с сервером любого типа;
  • Inspector – расширение для Google Chrome и FireFox;
  • Fire – утилита, необходимая для осуществления настроек переходов, а также анимации.

Ember.js – шаблоны для серверной разработки. С их помощью создаются игры и виджеты.

React

Среди всех фрейморков React быстро набрал популярность и не потерял ее. Представлен декларативной и гибкой библиотекой, используемой для пользовательских интерфейсов. Создателем выступает компания FaceBook. В их контенте данный framework задействуется чаще всего.

  • скоростью работы;
  • быстро увеличивающимся количеством библиотек в своем составе;
  • простую интеграцию в любую архитектуру;
  • обеспечивает неплохую производительность контента.

React –мощный набор инструментов для программиста. Интерфейс создать с его помощью будет проще простого. Подойдет и новичкам, и тем, кто долгое время занимается разработкой web-утилит.

Polymer

Polymer можно использовать в виде стандартных HTML-элементов. Это – инструментарий, нацеленный преимущественно на веб-приложения. Для того, чтобы грамотно использовать функции фреймворка, рекомендуется изучить стандарт Web Components. Отыскать его можно непосредственно в Google.

У Polymer 8 групп элементов:

  • App – компоненты, которые, согласно Google, активно применяются во всех разработках веб-утилит (маршрутизация, хранение информации и так далее);
  • Iron – базовые шаблоны разработчика;
  • Paper – UI-компоненты;
  • Google Web – компоненты для работы с Google API, а также соответствующих сервисов;
  • Gold – электронная коммерция;
  • Neon – работа с анимацией;
  • Platinum – компоненты, помогающие превращать веб-сайт в приложение.

Также здесь есть Molecules. Это способ простого взаимодействия с другими фреймворками и имеющимися библиотеками JS.

Основные библиотеки

Изучение фреймворков и библиотек – занятие интересное, но оно может длиться до бесконечности. Чтобы составлять утилиты и писать уникальные сайты, достаточно знать «базовые» шаблоны. По мере наработке опыта в разработке – изучать остальные существующие компоненты.

Все фреймворки в JS, найденные через Google – это то, что есть в JavaScript изначально. Главное знать, как ими пользоваться. То же самое обстоит и с libraries. Вот несколько самых важных и набравших популярность «хранилищ» шаблонов/классов для программистов на Джаве.

Ramda

Ramda – не фреймворк, а library, предназначенная для функционального программирования. Сейчас на GitHub у нее более 18 000 звездочек. Это «хранилище» стало популярным, потому что дает делать выбор между функциональным программированием и объектно-ориентированным.

Здесь масса полезных функций и преимуществ:

  • отсутствие побочных эффектов в функциях;
  • автокаррирование;
  • упорядоченность параметров по функциям.

Ramda больше подходит для тех, кто планирует меньше использовать ООП.

Lodash

Lodash – согласно информации из Google является одним из «хранилищ», долгое время остающихся популярным. Позволяет работать с массивами, объектами, строчками и иными элементами кода.

Предусматривает следующие функции и возможности:

  • интеграцию по строчкам, массивам и объектам;
  • право на создание функций композитного типа;
  • тестирование значений и управление оными.

В отличие от фреймворков, эта library работает быстро, осваивается даже новичками в считанные минуты.

Highlight

Highlight.js – «хранилище», предоставляющее классы и массивы, задействованные при выделении синтаксиса. Работает не только в браузерах, но и на серверах. Позволяет распознавать практически все коды. Обладает функциями автоопределения языка.

Google говорят, что это – отличный инструмент для тех, кто работает с сайтами и блогами, у которых предусматривается немалый код.

Google говорит, что D3 может применяться при создании игр. Это – средство визуализации информации. Популярность – почти 90 000 звезд. Обладает следующими возможностями:

  • поддержка HTML;
  • работа с SVG;
  • наличие CSS.

Отлично функционирует во всех существующих браузерах, включая Google Chrome. На первых порах кажется запутанной, но на самом деле это не так. Посредством D3 удается создавать невероятные графические объекты с информацией.

JQuery – что такое и с чем едят

Стараясь изучить все фреймворки в JS, а также имеющиеся libraries, программеры сталкиваются с JQuery. Это – очень полезный компонент. Его фокус – взаимодействие JS и HTML. Данный инструмент облегчил работу с DOM-операциями.

Многие интересуются, что такое JQuery на самом деле – фреймворк или же библиотека. В Google дана информация о том, что это – library. Представлена набором функций JavaScript.

Обладает разнообразными возможностями. Среди них выделяют:

  • наличие движка кросс-браузерных CSS-селекторов Sizzle;
  • поддержку XPath в виде плагина;
  • переходы по дереву DOM;
  • наличие событий и визуальных эффектов;
  • дополнения типа AJAX;
  • JS-плагины.

Раньше JQuery применялась для того, чтобы быстро создавать скрипты. Несмотря на популярность соответствующего хранилища, использование оного на практике при коддинге становится все менее необходимым. Вместо подобного варианта приходят более функциональные, совершенные и быстрые libraries на Джаве.

Для более быстрой работы с фреймворком или library, стоит пройти специальные обучающие курсы по программированию. Есть предложения как для новичков, так и для опытных разработчиков. В конце учебы будет выдан сертификат, подтверждающий наличие умений и навыков в выбранном направлении. Срок обучения – от нескольких месяцев до года. Это – лучший способ узнать все фреймворки в JS и других языках программирования без Google и иных поисковых систем.

Что такое библиотеки классов Java?

Packages Vertex Academy

В этой статье мы очень обзорно познакомимся с такими понятиями:

  • библиотеки классов Java
  • пакеты в Java
  • классы
  • методы

В обычной жизни, если Вы пойдёте в библиотеку или книжный магазин, естественно, Вы там увидите огромное количество книг, которые отвечают на самые разные вопросы: по истории, математике, химии, социлогии и т.д. И не надо всё выдумывать с нуля — взял книгу и получил ответы/решения на многие вопросы.

Причём все книги разложены строго по полочкам:

  • на этой полочке книги по алгебре
  • на этой полочке книги по геометрии
  • на этой полочке книги по матанализу
  • и т.д.

Так вот в Java есть виртуальная библиотека протестированного кода — это уже готовые решения ко многим задачам, которые стоят перед программистами в их ежедневной работе. То есть бери код из библиотеки и используй. А это очень и очень экономит время программиста, потому что не надо писать абсолютно весь код с нуля.

В этой виртуальной библиотеке Java информация разбита по пакетам («packages») — это своеобразный аналог полочек в книжном магазине. В каждом пакете протестированный код по какому-то отдельно взятому направлению.

Читать:
Объясните что такое наложение

Например, есть такие пакеты:

  • java.applet
  • java.lang — это основной пакет языка Java
  • java.util
  • java.io
  • java.net
  • и т.д.

Если совсем любопытно, все пакеты Вы можете найти на сайте Oracle по ссылке: https://docs.oracle.com/javase/8/docs/api

Давайте посмотрим на схематическое изображение библиотеки в Java.

Biblioteka Vertex Academy

Как видите, слева изображены разные пакеты («packages»):

  • java.applet
  • java.lang
  • java.util
  • и т.д.

А что же в каждом пакете? В пакете лежат классы . Чтобы проиллюстрировать это, мы показали на примере пакета java.lang. Для примера на схеме изображён один из классов пакета java.lang — класс Math.

Детально что такое классы мы разберём в отдельной статье, когда мы с Вами дойдём до темы объектно-ориентированного программирования (ООП) в Java. А сейчас Вам будет достаточно понимать, что класс — это готовое решение, которое мы можем использовать при написании наших программ.

В классе есть методы (действия), которые мы можем выполнять с помощью класса. Например, в классе Math есть такие методы:

  • sqrt () — выведение квадратного корня
  • sin () — вычисление синуса угла
  • cos () — вычисление косинуса угла
  • и т.д.

То есть, если нам необходимо посчитать квадратный корень, нам не надо писать код, который пошагово программировал бы вычисление квадратного корня. А такой код бы потянул на очень и очень много строк кода. А мы просто берём из пакета java.lang класс Math, а в нём метод который нам нужен для вычисления квадратного корня sqrt () и всё — в одну строчку кода мы получим нужное нам решение.

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

Постепенно Вы познакомитесь с различными классами и их методами из библиотеки Java, и главное — как же их использовать в своём коде. А пока нам важно было очень обзорно понять данную тему. И данную миссию мы с Вами выполнили.

Надеемся, что наша статья была Вам полезна. Также есть возможность записаться на наши курсы по Java в Киеве. Обучаем с нуля. Детальную информацию Вы можете найти у нас на сайте.

Полезные и неизвестные библиотеки Java

Из этой статьи вы узнаете о некоторых не очень известных, но полезных библиотеках Java. Это вторая статья из серии «Полезное и неизвестное». Предыдущая описывала несколько привлекательных, но малоизвестных возможностей Java. Подробнее об этом можно прочитать здесь.

Сегодня мы сосредоточимся на библиотеках Java. Обычно мы используем в своих проектах несколько внешних библиотек — даже если не включаем их напрямую. Например, Spring Boot поставляется с определенным набором зависимостей, включенным стартерами. Если мы включаем, например, spring-boot-starter-test , то одновременно мы включаем такие библиотеки, как mockito , junit-jupiter или hamcrest . Конечно, это известные библиотеки для сообщества.

На самом деле существует множество различных Java‑библиотек. Обычно мне не нужно использовать многие из них (или даже они мне не нужны) при работе с такими фреймворками, как Spring Boot или Quarkus.

Однако есть несколько очень интересных библиотек, которые могут пригодиться везде. Возможно, вы не слышали ни об одной из них. Я собираюсь представить 5 моих любимых «полезных и неизвестных» Java‑библиотек. Давай начнем!

Исходный код

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

Вы также можете найти пример. Затем вам нужно просто следовать моим инструкциям.

Instancio

На первый огонь отправится Instancio. Как вы генерируете тестовые данные в ваших модульных тестах? Instancio поможет нам в этом. Ее цель — сократить время и количество строк кода, затрачиваемых на ручную настройку данных в модульных тестах. Она создает объекты и заполняет их случайными данными, делая наши тесты более динамичными. С помощью Instancio мы можем генерировать случайные данные, но в то же время мы можем установить пользовательские данные в определенном поле.

Прежде чем начать работу с Instancio, давайте обсудим нашу модель данных. Вот первый класс — Person :

Наш класс содержит три простых поля ( id , name , age ), одно перечисление Gender и экземпляр класса Address . Пол — это просто перечисление, содержащее значения MALE и FEMALE . Вот реализация класса Address :

Теперь давайте создадим тест для проверки успешного добавления и получения объектов из хранилища сервисом Person . Мы хотим генерировать случайные данные для всех полей, кроме поля id , которое задается сервисом. Вот наш тест:

Значения, сгенерированные для моего тестового запуска, видны ниже. Как видите, поле id равно null . Другие поля содержат случайные значения, сгенерированные в соответствии с типом поля ( String или int ).

Давайте посмотрим, как мы можем сгенерировать несколько объектов с помощью Instancio. Предположив, для нашего теста что нам нужно 5 объектов в списке, мы можем сделать это следующим образом. Мы также установим постоянное значение для полей city внутри объекта Address . Затем мы хотим протестировать метод для поиска объектов по названию города.

Давайте рассмотрим последний пример. Как и раньше, мы генерируем список объектов — на этот раз 100. Мы можем легко задать дополнительные критерии для генерируемых значений. Например, я хочу задать значение для поля age между 18 и 65 годами.

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

Datafaker

Следующая библиотека, которую мы сегодня рассмотрим, это Datafaker. Назначение этой библиотеки очень похоже на предыдущую. Нам нужно сгенерировать случайные данные. Однако на этот раз нам нужны данные, похожие на реальные данные. С моей точки зрения, это полезно для демонстрационных презентаций или запускаемых где‑либо примеров.

Datafaker создает фиктивные данные для ваших программ JVM за считанные минуты, используя наш широкий спектр из более чем 100 поставщиков данных. Это может быть очень полезно при генерации тестовых данных для заполнения базы данных, генерации данных для стресс‑теста или анонимизации данных из производственных сервисов. Давайте включим его в наши зависимости.

Мы немного расширим наш пример модели. Вот новое определение класса. Класс Contact содержит два поля email и phoneNumber . Мы проверим оба этих поля с помощью модуля jakarta.validation .

Вот новая версия нашего класса Person , которая содержит экземпляр объекта Contact:

Теперь давайте сгенерируем фиктивные данные для объекта Person . Мы можем создать локализованные данные, просто установив объект Locale в конструкторе Faker (1). Для меня это Польша.

Существует множество провайдеров для стандартных значений. Для настройки email нужно использовать провайдера Internet (2). Существуют специальные провайдеры для генерации телефонных номеров (3), адресов (4) и имен людей (5). Полный список доступных провайдеров можно посмотреть здесь. После создания тестовых данных мы можем запустить тест, добавляющий новый проверенный объект Person на стороне сервера.

Вот данные, сгенерированные во время моего тестирования. Думаю, вы можете найти здесь одно несоответствие (поле country )

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

JPA Streamer

Наша следующая библиотека связана с запросами JPA. Если вам нравится использовать потоки Java и вы создаете приложения, взаимодействующие с базами данных через JPA или Hibernate, библиотека JPA Streamer может быть интересным выбором. Это библиотека для выражения запросов JPA/Hibernate/Spring с использованием стандартных потоков Java. JPA Streamer мгновенно предоставляет разработчикам Java типо‑безопасные, выразительные и интуитивно понятные средства получения данных в приложениях баз данных. Более того, вы можете легко интегрировать ее с Spring Boot и Quarkus. Прежде всего, давайте включим JPA Streamer в наши зависимости:

Если вы хотите интегрировать ее со Spring Boot, вам нужно добавить одну дополнительную зависимость:

Чтобы протестировать JPA Streamer, нам нужно создать пример модели сущностей.

Есть также две другие сущности: Organization и Department . Вот их определения:

Теперь мы можем подготовить несколько запросов с использованием шаблона потоков Java. В следующем фрагменте кода мы ищем объект по идентификатору, а затем соединяем два отношения. По умолчанию это LEFT JOIN, но мы можем настроить его при вызове метода joining() . В следующем фрагменте кода мы соединяем Department и Organization , которые находятся в отношении @ManyToOne с сущностью Employee. Затем мы фильтруем результат, преобразуем объект в DTO и выбираем первый результат.

Конечно, мы можем вызывать множество других потоковых методов Java. В следующем фрагменте кода мы подсчитываем количество сотрудников, приписанных к определенному отделу.

Если вы ищете подробное объяснение и дополнительные примеры с JPA Streamer, вы можете прочитать мою статью, посвященную этой теме.

Blaze Persistence

Blaze Persistence — еще одна библиотека из области JPA и Hibernate. Она позволяет писать сложные запросы с помощью последовательного API конструктора с богатым API Criteria для JPA провайдеров. Но это еще не все. Вы также можете использовать модуль Entity‑View, предназначенный для маппинга в DTO. Конечно, вы можете легко интегрироваться со Spring Boot или Quarkus. Если вы хотите использовать все модули Blaze Persistence в своем приложении, стоит добавить секцию dependencyManagement в Maven pom.xml :

Лично я использую Blaze Persistence для маппинга DTO. Благодаря интеграции со Spring Boot мы можем заменить Spring Data Projections на Blaze Persistence Entity-Views. Это будет особенно полезно для более сложных карт, поскольку Blaze Persistence предлагает больше возможностей и лучшую производительность для этого. Подробное сравнение вы можете найти в следующей статье. Если мы хотим интегрировать Entity-Views Blaze Persistence со Spring Data, мы должны добавить следующие зависимости:

Затем необходимо создать интерфейс с геттерами для маппированых полей. Он должен быть снабжен аннотацией @EntityView , которая относится к целевому классу сущностей. В следующем примере мы сопоставляем два поля сущности firstName и lastName отдельные поля внутри объекта PersonDTO . Чтобы маппить первичный ключ объекта, необходимо использовать аннотацию @IdMapping .

Мы все еще можем воспользоваться преимуществами шаблона репозитория Spring Data. Интерфейс нашего репозитория должен расширять интерфейс EntityViewRepository .

Нам также нужно предоставить некоторую дополнительную конфигурацию и включить Blaze Persistence в основном классе или классе конфигурации:

Hoverfly

Наконец, последняя из Java‑библиотек в моем списке — Hoverfly. Точнее, мы будем использовать задокументированную здесь Java‑версию библиотеки Hoverfly. Это легковесный инструмент виртуализации сервисов, позволяющий создавать заглушки или имитировать HTTP(S) сервисы. Hoverfly Java — это привязка к нативному языку, которая дает вам выразительный API для управления Hoverfly в Java. Она предоставляет вам класс Hoverfly, который абстрагируется от бинарных и API вызовов, DSL для создания симуляций и интеграцию JUnit для использования в модульных тестах.

Хорошо, есть и другие похожие библиотеки… но мне почему‑то очень нравится Hoverfly.

Это простая, легковесная библиотека, которая может выполнять тесты в различных режимах, таких как симуляция, слежка, захват или сравнение. Вы можете использовать Java DSL для создания сопоставлений запросов и ответов. Давайте включим последнюю версию Hoverfly в зависимости Maven:

Предположим, у нас есть следующий метод в нашем Spring @RestController . Прежде чем вернуть себе ответ на ping, он вызывает другую службу по адресу http://callme-service:8080/callme/ping .

Теперь мы создадим тест для нашего контроллера. Чтобы использовать Hoverfly для перехвата исходящего трафика, зарегистрируем HoverflyExtension (1). Затем мы можем использовать объект Hoverfly для создания запроса и имитации HTTP‑ответа (2). Имитируемое тело ответа I’m callme-service v1 .

Мы можем легко настроить поведение Hoverfly с помощью аннотации @HoverflyConfig . По умолчанию Hoverfly работает в режиме прокси. Если мы хотим, чтобы он работал как веб‑сервер, нам нужно установить для свойства webserver значение true (1). После этого он будет прослушивать запросы на localhost и порту, указанном свойством proxyPort . На следующем шаге мы также включим Spring Cloud @LoadBalancedClient для настройки статического списка целевых URL‑адресов вместо динамического обнаружения (2). Наконец, мы можем создать тест Hoverfly. На этот раз мы перехватываем трафик с веб‑сервера, прослушивающего localhost:8080 (3).

Вот конфигурация клиента балансировщика нагрузки, созданная только для целей тестирования.

Заключительные мысли

Как вы, наверное, догадались, я использовал все эти Java‑библиотеки в приложениях Spring Boot. Хотя Spring Boot поставляется с определенным набором внешних библиотек, иногда нам могут понадобиться некоторые дополнения. Представленные мной Java‑библиотеки обычно создаются для решения одной конкретной задачи, такой как, например, генерация тестовых данных. С моей точки зрения, это совершенно нормально. Надеюсь, что вы найдете хотя бы одну позицию из моего списка полезной в своих проектах.

Похожие статьи