![](https://habrastorage.org/getpro/habr/upload_files/84b/c7a/0d9/84bc7a0d9e6508e8f6207d56733d820c.png)
Мы рады сообщить, что второй мажорный релиз 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.
![](https://habrastorage.org/getpro/habr/upload_files/b0f/241/b67/b0f241b6709a9264c8fc266c55d3068b.png)
Кроме иконки с часто используемыми действиями, появился ещё один gutter icon – Bean Navigation, показывающий взаимодействие текущего объекта с другими бинами.
Из Bean Navigation можно увидеть какие бины заинжектированы в текущий бин и наоборот. Это касается как проектных бинов, так и тех, что используются из сторонних библиотек. Кроме того, если инжектирован интерфейс, можно увидеть всех кандидатов для инжекции.
![](https://habrastorage.org/getpro/habr/upload_files/732/5de/859/7325de8598992c88bb164f91037d43a8.png)
Подробнее про gutter иконки от Amplicode я рассказал в отдельном видео. Посмотрите его, чтобы увидеть эту фичу в действии:
Улучшенная генерация Spring Web тестов
Мы получили много запросов в наш телеграм-чат с просьбами улучшить генерацию тестов для Spring Web. Ваша активность помогла нам приоритизировать эту функциональность.
Улучшения в генерации тестов можно разделить на две части: переработка UI и улучшение кода.
Изменения в UI:
Теперь методы отсортированы так же, как и в контроллере.
Рядом с каждым методом отображается связанный с ним путь.
Элементы для работы с параметрами запроса и телом запроса переработаны, чтобы соответствовать поведению большинства HTTP-клиентов.
PathVariable и RequestParam теперь можно легко отличить благодаря понятным подписям.
![](https://habrastorage.org/getpro/habr/upload_files/747/04f/bba/74704fbbac3e57e874af5f0d5d06155c.png)
Изменения в кодогенерации:
В объекты типа String, представляющие собой JSON, автоматически инжектируется язык JSON, за счёт чего содержимое отображается как JSON файл, а не как обычная строка.
Уменьшено количество генерируемых локальных переменных.
Исправлен баг с некорректной передачей нескольких id в запросах.
![](https://habrastorage.org/getpro/habr/upload_files/b74/2d6/82d/b742d682db8e7160eb6b424aaf97b4a7.png)
Частичная генерация CRUD REST контроллера
В предыдущем релизе Amplicode появилась возможность создать CRUD Rest Controller для любой JPA сущности. Теперь можно создавать отдельные методы для REST-контроллеров, а не только весь контроллер целиком. Это особенно удобно, когда нужно добавить новый эндпоинт в уже существующий контроллер.
Действия по созданию отдельных эндпоинтов доступны в Gutter Icon (1), панели Amplicode Designer (2) и меню «Generate» (3):
![](https://habrastorage.org/getpro/habr/upload_files/b23/eb9/b11/b23eb9b11f85ffbd05be6887fe33f1b2.png)
Для каждого HTTP-метода можно указать или создать JPA Repository, DTO/Domain Object, Proxy Service и Request Path.
![](https://habrastorage.org/getpro/habr/upload_files/9d4/a03/1b0/9d4a031b08ecb44db96c2614bb9978d0.png)
Переиспользование сервисов в Docker Compose
Docker Compose предлагает несколько способов переиспользования сервисов из одного файла в другой. Один из таких способов подразумевает использование include.
Ключевое слово include позволяет включить один Docker Compose файл в другой. Этот способ включения одного файла в другой удобен, когда нужно просто переиспользовать одни и те же сервисы без дополнительной конфигурации.
Amplicode знает про Include в Docker Compose и учитывает его для отображения элементов в панелях Amplicode Explorer и Structure:
![](https://habrastorage.org/getpro/habr/upload_files/d94/635/efe/d94635efe050d26de1a180656742f469.png)
Но вот если вам нужно настроить переиспользуемые сервисы под свои нужды — лучше использовать ключевое слово extends. С его помощью, как и с помощью include, можно включить сервис из одного Docker Compose файла в другой, но при этом переопределить любые его свойства.
![](https://habrastorage.org/getpro/habr/upload_files/3c1/77a/618/3c177a6185091f37a35cd4a8691391ee.png)
Amplicode поддерживает эту возможность не только с точки зрения визуального отображения, но и помогает непосредственно во время расширения сервисов.
Теперь в меню «Generate» вы найдете не только действия для создания сервисов с нуля и рекомендации по генерации сервисов на основе уже объявленных в текущем compose файле, но и действие «Extends Existing Service»:
![](https://habrastorage.org/getpro/habr/upload_files/3a3/843/a34/3a3843a3488b38f3a57a1db6bda188a9.png)
Что самое потрясающее, панель Amplicode Designer в том числе будет учитывать те свойства, которые не объявлены для сервиса в текущем файле, но объявлены в том, на который мы ссылаемся:
![](https://habrastorage.org/getpro/habr/upload_files/884/19b/36c/88419b36ce9019a3d5db4f05e157e382.png)
Подробнее про эту фичу я рассказал в отдельном видео:
Поддержка Kubernetes и Helm
Docker Compose отлично подходит для настройки окружения и деплоя нескольких сервисов на одной машине. Однако для продакшена часто нужны более мощные инструменты, такие как Kubernetes.
Теперь Amplicode поддерживает Kubernetes и помогает генерировать Helm чарты! Вы можете создавать как пустые Helm чарты, так и готовые чарты для PostgreSQL, Kafka и Spring Boot приложений.
![](https://habrastorage.org/getpro/habr/upload_files/9ec/afb/bfb/9ecafbbfb0998abb0a6620e596519046.png)
Кроме того, запуск чартов стал еще проще – теперь это можно делать прямо из панели Amplicode Explorer, без необходимости обращаться к консоли:
![](https://habrastorage.org/getpro/habr/upload_files/246/d40/77d/246d4077d165d11a3a17015120581323.png)
Наконец, состояние запущенных чартов можно проверять в панели Services:
![](https://habrastorage.org/getpro/habr/upload_files/311/46c/797/31146c79712dd81a5e106311b1013131.png)
Можно сказать, что поддержка 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 в нашем телеграм-чате. В том числе благодаря вам мы смогли приоретизировать часть фич, которые ждали своего часа в бэклоге, а также исправили некоторые баги :)
![](https://habrastorage.org/getpro/habr/upload_files/167/212/bca/167212bcaa661d2b4ce196d31dec66e6.png)
Следующий мажорный релиз запланирован на осень. Но до выхода Amplicode 2024.3 мы будем стабилизировать текущую версию и выпускать обновления с исправлениями. Подписывайтесь на наши ресурсы, чтобы быть в курсе:
semo
А можно сначала обновить сайт, магазины плагинов и выложить архивы?
А то у вас все еще EAP версия.
Зачем торопитесь?
honest_niceman Автор
Добрый день!
На самом деле, у нас сейчас все версии – EAP. Я поэтому и не указал EAP в названии статьи, хотя возможно и стоило)
Но в целом, этот EAP-постфикс у нас будет во всех версиях, которые будут опубликованы в этом году.
При этом всё доступно, версии довольно стабильные (по крайней мере те обращения, которые мы получаем в телеграм-чате не носят критический характер), на сайте информация актуальная, касаемо магазина плагинов я не совсем понял о чём именно речь. Если речь про наш маркетплейс, который можно указать в IDE, как описано в рекомендуемом способе установки, то с ним обновление также проходит успешно.
Если предпочитаете не указывать наш маркетплейс, а следить за обновлениями вручную и использовать архивы, то их я тоже опубликовал, можно на GitHub найти.
Если вдруг какие-то проблемы возникнут с установкой/обновлением – всегда готов помочь :)
semo
Спасибо. Понятно все стало.