注意, 请使用SpEL Assistant插件, 由于收藏过多, 所以暂不删帖了
SpEL Assistant不需要绑定java注解库, 可以避免各位代码洁癖, 另外由于减少了代码扫描, 性能也有很大提升
注意, 请使用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自定义函数 - 支持自动推荐插件安装
1922

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



