首页 > 解决方案 > Intellij IDEA 的自定义插件可以在其代码中使用 DI 吗?

问题描述

我正在为 Intellij IDEA 2018.2+ 开发一个插件,它将提供一些额外的检查。

我已经了解到有一个plugin.xml文件是插件的“心脏”,负责插件的主要行为。

据我了解,要实现(例如)额外的检查行为,我们需要在接口中定义inspectionToolProvider和继承plugin.xmlInspectionToolProvider为其他扩展定义了相同的结构——我们需要在其中定义一些东西.xml并实现一些接口。

困扰我的是,如果我想实现一些或多或少复杂的算法,看起来我需要使用很多静态方法和实用程序类,因为我还没有找到使用 DI 的方法(例如 Spring 之一)在插件开发期间。

Intellij IDEA SDK 文档中的一些示例还将“帮助”方法显示为在实用程序类中定义的静态方法。

所以总体问题:有没有办法在 Intellij IDEA 插件开发过程中使用依赖注入

标签: javaintellij-ideaintellij-plugin

解决方案


IntelliJ IDEA 有自己的依赖注入,由 PicoContainer 管理。它允许您将任何组件或服务注入在相同或更低级别(可能的级别是应用程序、项目和模块)上创建的任何组件、服务或扩展的构造函数中。要使用它,您只需声明相应类型的构造函数参数即可;您不需要应用任何额外的注释。

您也可以在您的插件中启动您自己的 DI 容器(使用 Spring 或任何其他框架),但是您将自己负责支持核心 IntelliJ IDEA 组件的注入。


推荐阅读