IntelliJ Platform SDK DevGuide

Edit page

Spring API

Spring API允许第三方插件在IntelliJ IDEA中重用,集成或扩展现有的Spring Framework支持.

使用Spring API的流行插件是hybris集成.

要开发插件,您需要使用IntelliJ IDEA Ultimate Edition 13.1或更高版本.

###设置IntelliJ Platform SDK

#####新SDK

请创建IntelliJ Platform SDK以包含所有必需的最低文件.

然后将$ IDEA_HOME $/plugins/Spring/lib/spring.jar添加到其_classpath_(_not_到你的插件模块的依赖项).

#####现有SDK

请按照以下步骤修改现有的IntelliJ Platform SDK:

*添加到_classpath_(_not_到您的插件模块的依赖项)

*$ IDEA_HOME $/plugins/Spring/lib/spring-api.jar not在最近的版本中,合并到spring.jar

*$ IDEA_HOME $/plugins/Spring/lib/spring.jar

*添加到_sourcepath_

*$ IDEA_HOME $/lib/src/src_spring-openapi.zip

一般注意事项

如果您在插件中使用其他Spring功能(例如Spring EL),请确保将所有必需的JAR添加到IntelliJ Platform SDK类路径中,以使插件的测试正常工作.

请在插件中仅使用spring-api.jar(提供源代码)中公开的与Spring相关的功能. 使用Spring插件本身的任何其他“内部”(实现)类(spring.jar)是不受支持的.

plugin.xml

<depends> com.intellij.spring </depends>添加到你的plugin.xml中,要求激活“Spring Support”插件. 所有可用的扩展点都在com.intellij.spring前缀下提供.

请注意,“Spring Support”插件本身依赖于其他一些需要在沙箱中启用的插件(请参阅启动时的通知).

##主要概念

Spring facet可以安装在模块上. (几乎)所有Spring功能都需要一个现有且正确设置的Spring facet.

Spring facets通常包含一个用户配置或自动提供的文件集,它们将一组与Spring相关的配置文件(XML,Code,.properties或其他配置文件)组合在一起.

文件集通常对应于运行时的实际应用程序上下文配置. 可以通过依赖于另一个文件集(可能来自另一个模块)来建模层次结构.

作为API用户,您通常更喜欢使用SpringModel(它建立在fileset(s)之上).

API更新

我如何能…

Spring Setup

要检查Spring/Spring Facet等的可用性,请参阅com.intellij.spring.model.utils.SpringCommonUtils.

_2016.2_参见com.intellij.spring.SpringLibraryUtil以获取有关正在使用的Spring的确切版本的信息.

Spring Model

#####按文件PsiElement获取Spring模型.

请参阅SpringManager#getSpringModel(s)...com.intellij.spring.model.utils.SpringModelUtils.

#####贡献隐式模型

请参阅com.intellij.spring.SpringModelProvider以提供隐式文件集(例如,由特定配置文件中的另一个框架提供).

版本15

有关方便的基类,请参阅com.intellij.spring.facet.SpringAutodetectedFileSet. 请注意,Spring facet中的用户无法编辑/修改自动检测的文件集.

#####自定义隐式模型配置

_2017.1_参见com.intellij.spring.facet.SpringFileSetEditorCustomization来自定义演示文稿和/或为特定的自动检测文件集添加额外的设置/操作.

#####贡献隐式bean

请参阅com.intellij.spring.model.jam.CustomComponentsDiscoverercom.intellij.spring.model.SpringImplicitBeansProviderBase以提供隐式(特定于框架)的bean(例如Spring MVC的“servletContext”).

版本15

CustomComponentsDiscoverer已分别分为com.intellij.spring.model.custom.CustomLocalComponentsDiscoverercom.intellij.spring.model.custom.CustomModuleComponentsDiscoverer.

#####贡献自定义bean范围

版本14

请参阅com.intellij.spring.model.scope.SpringCustomBeanScope以提供自定义(例如特定于框架)bean范围.

#####获取/创建Spring配置文件

版本14.1

com.intellij.spring.profiles.SpringProfilesFactory

豆子

#####按名称搜索bean

com.intellij.spring.CommonSpringModel#findBeanByName

Version 14:com.intellij.spring.model.utils.SpringModelSearchers#findBean

#####按类型搜索bean

选择com.intellij.spring.CommonSpringModel#findBeansByPsiClassXXX变体之一(请注意不推荐使用的方法).

Version 14:com.intellij.spring.model.utils.SpringModelSearchers#findBeans

Version 16:注意’SpringModelSearchParameters.BeanClass#withInheritors(GlobalSearchScope)的弃用

#####查明是否存在具有给定名称/类型的bean

Version 14:com.intellij.spring.model.utils.SpringModelSearchers#doesBeanExist(请注意弃用的方法)

#####将bean作为基础结构bean

Version 14:实现SpringInfrastructureBean,这样的bean获取特殊图标,可以在UI的各个地方进行过滤.

XML配置

所有对基于XML的Spring配置文件的支持都是通过DOM-API提供的.

#####添加对其他Spring命名空间的支持

请参阅EPcom.intellij.spring.dom.SpringCustomNamespaces,注册的namespace-key必须与通过@ Namespace注册的DOM元素匹配.

通过标准的DomExtender <Beans>EP或com.intellij.spring.dom.SpringCustomNamespaces #registerExtensions(版本14)注册可用元素.

请注意getModelVersiongetStubVersion(参见javadoc).

#####在我的DomElement中添加对Spring Bean的引用

使用以下模板:

@Convert(SpringBeanResolveConverter.class) @RequiredBeanType("fqn.to.required.class")//optional GenericAttributeValue<SpringBeanPointer> getMyAttributeName();

###代码配置

#####在我的JamElement中添加对Spring Bean的引用

版本14

JamStringAttributeMeta.Single<SpringBeanPointer> ATTRIBUTE_META = JamAttributeMeta.singleString("attributeName", new SpringBeanReferenceJamConverter("fqn.to.required.class"));
@AliasFor

版本16

请参阅com.intellij.spring.model.aliasFor.SpringAliasForUtils以获取相应的@ AliasFor JAM.

spring.factories

版本15

请参阅com.intellij.spring.spi.SpringSpiManager.

IDE功能

Add inspections to Spring Validator

Add additional inspections (e.g. for custom namespace) to Spring Validator (Settings|Compiler|Validation) via EP com.intellij.spring.SpringInspectionsRegistry$Contributor.

#####将其他文件添加到Spring Validator

版本14.1

可以通过com.intellij.spring.SpringInspectionsRegistry $ AdditionalFilesContributor注册通过Spring Validator注册的检查处理的其他文件(例如特定的.properties`配置文件).

#####为其他框架配置Spring支持

当通过框架向导添加Spring facet时,使用com.intellij.spring.facet.SpringConfigurator提供“自动”配置.

UI/Presentation

请不要直接引用SpringApiIcons中的bean图标,而是使用SpringPresentationProvider重新使用统一的图标/bean名称. 有关弹出/列表渲染器的信息,请参阅SpringBeansPsiElementCellRenderer.

#Spring Boot

2018.1

Spring Boot API允许在IDE中扩展/访问Spring Boot特定的支持.

配置

请执行以下步骤_additionally_以设置Spring API支持(请参阅此处):

*添加到_classpath_(_not_到您的插件模块的依赖项)

*$ IDEA_HOME $/plugins/SpringBoot/lib/spring-boot.jar

*$ IDEA_HOME $/plugins/SpringBoot/lib/spring-boot-initializr.jar(可选)

*$ IDEA_HOME $/plugins/SpringBoot/lib/spring-boot-run.jar(可选)

*添加到_sourcepath_

*$ IDEA_HOME $/lib/src/src_spring-boot-openapi.zip

plugin.xml

<depends> com.intellij.spring.boot </depends>添加到你的plugin.xml中,要求激活“Spring Boot”插件. 所有可用的扩展点都在com.intellij.spring.boot前缀下提供.

Spring Boot Library

使用com.intellij.spring.boot.library.SpringBootLibraryUtil查询常见附加库的版本和可用性.

###自定义配置文件格式

com.intellij.spring.boot.model.SpringBootModelConfigFileContributor允许添加对自定义配置文件格式的支持.                                             

###自动配置支持

现有的Condition实现可以在IDE中通过com.intellij.spring.boot.model.autoconfigure.conditions.ConditionalContributor在设计时进行模拟.

实现com.intellij.spring.boot.model.autoconfigure.conditions.jam.ConditionalOnJamElement的自定义@ConditionalOn ...注释将自动添加到评估中.

Spring Initializr

需要spring-boot-initializr.jar

com.intellij.spring.boot.initializr.SpringInitializrModuleBuilderPostTask允许在创建模块后执行自定义设置步骤(例如,与构建系统的设置集成).

###端点选项卡

2018.2 - 需要spring-boot-run.jar

使用EPcom.intellij.spring.boot.run.endpoint添加自定义执行器端点选项卡. 任何设置都应该通过com.intellij.spring.boot.run.endpointTabConfigurable EP在“Spring Boot”设置选项卡中公开.

Last modified: 9 May 2019