Может ли пользовательский плагин для Intellij IDEA использовать DI в своем коде? - PullRequest
0 голосов
/ 08 декабря 2018

Я разрабатываю плагин для Intellij IDEA 2018.2+, который обеспечит некоторые дополнительные проверки.

Я уже узнал, что существует файл plugin.xml, который является «сердцем» плагина и отвечает заосновное поведение плагина.

Как я понимаю, для реализации (например) дополнительного поведения проверки нам нужно определить inspectionToolProvider в plugin.xml и наследовать InspectionToolProvider интерфейс.Та же самая структура определена для других расширений - нам нужно определить что-то в .xml и реализовать некоторый интерфейс.

Меня беспокоит то, что если я хочу реализовать более или менее сложный алгоритм, он выглядиткак мне нужно использовать множество статических методов и служебных классов, потому что я не нашел способа использовать DI (например, Spring one) во время разработки плагинов.

Некоторые примеры в документации Intellij IDEA SDK также показывает «вспомогательные» методы как статические, определенные в служебных классах.

Итак, общий вопрос: есть ли способ использовать внедрение зависимостей во время разработки плагина Intellij IDEA ?

1 Ответ

0 голосов
/ 10 декабря 2018

IntelliJ IDEA имеет свое собственное внедрение зависимостей, управляемое PicoContainer.Он позволяет вам внедрить любой компонент или сервис в конструктор любого компонента, сервиса или расширения, созданного на том же или более низком уровне (возможные уровни: приложение, проект и модуль).Чтобы использовать его, вы просто объявляете параметр конструктора соответствующего типа;вам не нужно применять какие-либо дополнительные аннотации.

Вы также можете запустить свой собственный DI-контейнер (используя Spring или любую другую платформу) в своем плагине, но тогда вы будете нести ответственность за поддержку внедрения ядра.Компоненты IntelliJ IDEA.

...