java - Intellij IDEA 的自定义插件可以在其代码中使用 DI 吗?
问题描述
我正在为 Intellij IDEA 2018.2+ 开发一个插件,它将提供一些额外的检查。
我已经了解到有一个plugin.xml
文件是插件的“心脏”,负责插件的主要行为。
据我了解,要实现(例如)额外的检查行为,我们需要在接口中定义inspectionToolProvider
和继承plugin.xml
。InspectionToolProvider
为其他扩展定义了相同的结构——我们需要在其中定义一些东西.xml
并实现一些接口。
困扰我的是,如果我想实现一些或多或少复杂的算法,看起来我需要使用很多静态方法和实用程序类,因为我还没有找到使用 DI 的方法(例如 Spring 之一)在插件开发期间。
Intellij IDEA SDK 文档中的一些示例还将“帮助”方法显示为在实用程序类中定义的静态方法。
所以总体问题:有没有办法在 Intellij IDEA 插件开发过程中使用依赖注入?
解决方案
IntelliJ IDEA 有自己的依赖注入,由 PicoContainer 管理。它允许您将任何组件或服务注入在相同或更低级别(可能的级别是应用程序、项目和模块)上创建的任何组件、服务或扩展的构造函数中。要使用它,您只需声明相应类型的构造函数参数即可;您不需要应用任何额外的注释。
您也可以在您的插件中启动您自己的 DI 容器(使用 Spring 或任何其他框架),但是您将自己负责支持核心 IntelliJ IDEA 组件的注入。
推荐阅读
- java - 如何使用java从xml文件中的CDATA获取测试值
- parsing - 如何解析 Yarn 日志获取性能指标?
- python - 无法使用 OR 匹配正则表达式中的特定模式
- sql - TSQL获取每个人和他的号码的最大和最小日期
- java - 如何在 Android 上使用 Luxand 的 FSDK (Face SDK) 中的 FSDK_LoadImageFromBuffer 函数?
- c# - 有谁知道为什么我的台词在预览中被阻止(Unity3D)
- angular - Angular - 如何防止嵌套管道与依赖的可观察对象?
- python - 导入错误:找不到符号:macOS Sierra 10.12.6 中带有 PyQT5 的 _futimens
- node.js - node.js 的猫鼬外键问题
- matlab - 在matlab中检查没有for循环的数组中的成员资格