6 August 2024

Что нового в Amplicode 2024.2

Мы рады сообщить, что второй мажорный релиз Amplicode в 2024 году успешно состоялся. В этом релизе представлено множество улучшений и исправлений, а также много новых фич. Вот некоторые из них:

  • Gutter Icons для Spring-объектов;
  • Улучшенная генерация Spring Web тестов;
  • Поддержка Extends и Include в Docker Compose;
  • Генерация отдельных HTTP-методов для REST-контроллеров;
  • Поддержка Kubernetes и Helm.

Подробнее о каждой из этих фич читайте ниже!

Gutter Icons – один клик до самых важных действий

Теперь вместо Editor Toolbar в Spring-объектах, JPA-сущностях и тестах Spring Boot вы увидите gutter icons (gutter иконки) напротив названий классов. Одна из них содержит часто используемые действия, ранее доступные в Editor Toolbar.

Кроме иконки с часто используемыми действиями, появился ещё один gutter icon – Bean Navigation, показывающий взаимодействие текущего объекта с другими бинами.

Из Bean Navigation можно увидеть какие бины заинжектированы в текущий бин и наоборот. Это касается как проектных бинов, так и тех, что используются из сторонних библиотек. Кроме того, если инжектирован интерфейс, можно увидеть всех кандидатов для инжекции.

Подробнее про gutter иконки от Amplicode я рассказал в отдельном видео. Посмотрите его, чтобы увидеть эту фичу в действии:

Улучшенная генерация Spring Web тестов

Мы получили много запросов в наш телеграм-чат с просьбами улучшить генерацию тестов для Spring Web. Ваша активность помогла нам приоритизировать эту функциональность.

Улучшения в генерации тестов можно разделить на две части: переработка UI и улучшение кода.

Изменения в UI:

  • Теперь методы отсортированы так же, как и в контроллере.
  • Рядом с каждым методом отображается связанный с ним путь.
  • Элементы для работы с параметрами запроса и телом запроса переработаны, чтобы соответствовать поведению большинства HTTP-клиентов.
  • PathVariable и RequestParam теперь можно легко отличить благодаря понятным подписям.

Изменения в кодогенерации:

  1. В объекты типа String, представляющие собой JSON, автоматически инжектируется язык JSON, за счёт чего содержимое отображается как JSON файл, а не как обычная строка.
  2. Уменьшено количество генерируемых локальных переменных.
  3. Исправлен баг с некорректной передачей нескольких id в запросах.

Частичная генерация CRUD REST контроллера

В предыдущем релизе Amplicode появилась возможность создать CRUD Rest Controller для любой JPA сущности. Теперь можно создавать отдельные методы для REST-контроллеров, а не только весь контроллер целиком. Это особенно удобно, когда нужно добавить новый эндпоинт в уже существующий контроллер.

Действия по созданию отдельных эндпоинтов доступны в Gutter Icon (1), панели Amplicode Designer (2) и меню «Generate» (3):

Для каждого HTTP-метода можно указать или создать JPA Repository, DTO/Domain Object, Proxy Service и Request Path.

Переиспользование сервисов в Docker Compose

Docker Compose предлагает несколько способов переиспользования сервисов из одного файла в другой. Один из таких способов подразумевает использование include.

Ключевое слово include позволяет включить один Docker Compose файл в другой. Этот способ включения одного файла в другой удобен, когда нужно просто переиспользовать одни и те же сервисы без дополнительной конфигурации.

Amplicode знает про Include в Docker Compose и учитывает его для отображения элементов в панелях Amplicode Explorer и Structure:

Но вот если вам нужно настроить переиспользуемые сервисы под свои нужды — лучше использовать ключевое слово extends. С его помощью, как и с помощью include, можно включить сервис из одного Docker Compose файла в другой, но при этом переопределить любые его свойства.

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

Теперь в меню «Generate» вы найдете не только действия для создания сервисов с нуля и рекомендации по генерации сервисов на основе уже объявленных в текущем compose файле, но и действие «Extends Existing Service»:

Что самое потрясающее, панель Amplicode Designer в том числе будет учитывать те свойства, которые не объявлены для сервиса в текущем файле, но объявлены в том, на который мы ссылаемся:

Подробнее про эту фичу я рассказал в отдельном видео:

Поддержка Kubernetes и Helm

Docker Compose отлично подходит для настройки окружения и деплоя нескольких сервисов на одной машине. Однако для продакшена часто нужны более мощные инструменты, такие как Kubernetes.

Теперь Amplicode поддерживает Kubernetes и помогает генерировать Helm чарты! Вы можете создавать как пустые Helm чарты, так и готовые чарты для PostgreSQL, Kafka и Spring Boot приложений.

Кроме того, запуск чартов стал еще проще – теперь это можно делать прямо из панели Amplicode Explorer, без необходимости обращаться к консоли:

Наконец, состояние запущенных чартов можно проверять в панели Services:

Можно сказать, что поддержка Kubernetes находится на стадии preview, и мы будем рады вашей обратной связи, чтобы улучшить функциональность в соответствии с вашими потребностями :)

И это ещё не всё!

На самом деле, это далеко не всё, что вошло в релиз Amplicode 2024.2. Помимо крупных новых фич, мы внесли множество мелких улучшений и исправлений – всего было закрыто более 170 тикетов!

Напомню, что текущая версия Amplicode на данный момент доступна для 2-х версий IntelliJ IDEA: 2023.3, 2024.1. Поддержать IntelliJ IDEA 2024.2 мы планируем в ближайшее время. Если вы испытываете трудности с переходом на новые версии IntelliJ IDEA, вы всё ещё можете скачать и уставновить Amplicode 2024.1, он доступен для бóльшего количества версий IntelliJ IDEA.

Огромное спасибо всем, кто делится своим опытом использования Amplicode в нашем телеграм-чате. В том числе благодаря вам мы смогли приоретизировать часть фич, которые ждали своего часа в бэклоге, а также исправили некоторые баги :)

Следующий мажорный релиз запланирован на осень. Но до выхода Amplicode 2024.3 мы будем стабилизировать текущую версию и выпускать обновления с исправлениями. Подписывайтесь на наши ресурсы, чтобы быть в курсе: