注意, 请使用SpEL Assistant插件, 由于收藏过多, 所以暂不删帖了
注意, 请使用SpEL Assistant插件, 由于收藏过多, 所以暂不删帖了
注意, 请使用SpEL Assistant插件, 由于收藏过多, 所以暂不删帖了
注意, 请使用SpEL Assistant插件, 由于收藏过多, 所以暂不删帖了

背景
首先 IDEA 默认是不支持 SpEL 的代码提示的
根据网上教程, 我们只能使用java-annotations库, 并添加@Language("SpEL")注解
但这样仅仅是能够支持SpEL表达式, 并不支持自定义变量, 也不支持提示方法参数和返回值. 尤其是对写框架和第三方库的人来说, 特别不友好
因此我写了这么一个IDEA插件: SpEL Extension, 支持2021.3以上版本的IDEA
安装
-
在项目中引入相关注解库
pom.xml
<dependency> <groupId>kim.nzxy</groupId> <artifactId>spel-extension</artifactId> <version>1.0.0</version> <scope>provided</scope> </dependency>build.gradle.kts
dependencies { compileOnly("kim.nzxy:spel-extension:1.0.0") }build.gradle
dependencies { compileOnly 'kim.nzxy:spel-extension:1.0.0' } -
在IDEA中搜索并安装
SpEL Extension插件, 安装后无需重启
使用
如图所示, 支持两种情况的代码提示
- 将
SpELMethod/SpELField注解放到注解的字段上, 即可添加相应的代码提示支持功能 - 将
SpELWith注解标注的普通的java字段中, 即可给出对应注解的代码提示(注: 仅支持标注了SpELMethod和SpELField的字段, 暂不支持Spring原生字段)
注解详解
@kim.nzxy.spel.SpELMethod----函数相关
如果标注了SpELMethod的注解作用于方法上, 则提示方法的返回值和参数信息
| 名称 | 类型 | 默认值 | 解释 |
|---|---|---|---|
| result | boolean | false | 为true则支持方法返回值 |
| resultName | String | “result” | 方法返回值的变量名称 |
| parameters | boolean | false | 为true表示支持方法参数, 默认支持所有参数名称 |
| parametersPrefix | String[] | {“p”, “a”} | 方法参数序号名称, 如p0/a0表示第一个参数 如不需要, 可手动指定parametersPrefix = {} |
@kim.nzxy.spel.SpELField–字段相关
定义该字段的变量参数, 支持定义多个
| 名称 | 类型 | 默认值 | 解释 |
|---|---|---|---|
| name | String | \ | SpEL变量名, 如果为"root", 则视为SpEL的root节点 |
| type | Class<?> | Object.class | 变量类型, 如果typeStr非空, 则忽略此字段 |
| typeStr | String | “” | 变量类型, 支持泛型, 示例: String, java.lang.String, java.util.List<String> |
@kim.nzxy.spel.SpELWith–方便定义常量
如果参数特别长, 可以用来方便的定义常量, 此注解可以方便的在常量字符串中支持代码提示
| 名称 | 类型 | 默认值 | 解释 |
|---|---|---|---|
| anno | Class<? extends Annotation> | \ | 对应注解 |
| field | String | “value” | 对应注解字段名称 |
TODO
- 支持配置文件配置, 免去引入
spel-extension库 - 支持配置
SpEL自定义函数 - 支持自动推荐插件安装
本文介绍了SpELAssistant插件,它简化IDEA对SpEL的支持,无需绑定java注解库,提升性能,支持方法返回值和参数提示,以及自定义字段和常量定义。
2057

被折叠的 条评论
为什么被折叠?



