Как стать автором
Обновить

Не играй в догонялки со Spring — Explyt Spring plugin для IDEA Community

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров5.7K
Всего голосов 35: ↑31 и ↓4+35
Комментарии12

Комментарии 12

Классная статья. И из нее следует, что разработчики Spring не думают о разработчиках плагинов)

Спасибо, вы сделали правильный вывод!
Если разработчики Spring добавили бы один метод, который срабатывал после завершения построения bean definitions, в интерфейс SpringApplicationRunListener о котором я упомянул в статье, то было бы сильно проще.

И тут кстати можно продолжать аналогии с билд системами, в том же Maven есть AbstractEventSpy, где в onEvent в нетипизированном виде приходят все необходимые события о этапах сборки. Который я и использовал в своем плагине GMaven, чтобы получить данные о проектной модели. А Spring (Spring Boot в частности) можно назвать по сути такой же "билд-системой". Только которая работает на уровень выше и отвечает за "сборку" приложения в момент старта. У нее также есть конфигурационные файлы, которые необходимо прочитать перед запуском, и на основании всех конфигов построить конечное приложение. И действительно, было бы не плохо, иметь там больше точек интеграции с внешним миром и это практически напрашивается... У них уже есть определнные тулзы для разработчиков, но они для этой задачи мне не подошли, я их изначально рассматривал.


И поэтому еще кстати, эта идея так легко легла на External System API ИДЕИ, которое было задумано как общее флоу для билд систем, на ней основываются такие плагины как Gradle, SBT - Scala, мой альтернативный мавен плагин GMaven. Что уже в процессе разработки я понял, что эти аналогии не лишены оснований. Если изначально, я использовал External System API с целью быстрее выкатить прототип, то по итогу я даже сам удивился, как легко и непринужденно эта идея легла на текущее API ИДЕИ для билд систем, что весь процесс разработки занял буквально несколько дней и у меня не возникло в процессе никаких затыков. Это был как раз тот случай, когда несколько недель изучаешь и думаешь как сделать, и потом за пару дней кодинга, получаешь готовое решение.

Я не нашел. Хотя пытался, когда реализовывал данный функционал. Может быть плохо искал...
Возможно стоит завести им issue на этот счет.
У них есть плагины для билд систем https://docs.spring.io/spring-boot/build-tool-plugin/index.html
Как мне видится это должно быть реализованно именно там. Т.к. приложение надо изначально собрать. А далее выполнить определнный таск, который распечатает мета-информацию о текущем контексте приложения. Например как это сделано в мавен для анализа зависимостей: maven dependency:tree

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

Мне кажется стоит завести issue. Заодно можно узнать - думают ли они в этом направлении

Интересно, чем дело кончится

Вот и все закрыли запрос) С комментарием что этим должна заниматься spring-core команда. Но не уточнили будет ли...

Подозреваю, что если им не завести тикет - вряд ли

Как следует из названия плагина - "Explyt Spring" он добавляет поддержку Spring. В статье про это подробно описано. Разве в community есть поддержка данного фрейморка? можете дать ссылку на плагин который за это отвечает?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий