IDEA中自定义注解支持SEL代码提示, 自定义参数, 函数参数, 返回值

IDEA中自定义注解支持SEL代码提示, 自定义参数, 函数参数, 返回值_第1张图片

背景

首先 IDEA 默认是不支持 SpEL 的代码提示的

根据网上教程, 我们只能使用java-annotations库, 并添加@Language("SpEL")注解

但这样仅仅是能够支持SpEL表达式, 并不支持自定义变量, 也不支持提示方法参数和返回值. 尤其是对写框架和第三方库的人来说, 特别不友好

因此我写了这么一个IDEA插件: SpEL Extension, 支持2021.3以上版本的IDEA

安装

  1. 在项目中引入相关注解库

    pom.xml

    <dependency>
        <groupId>kim.nzxygroupId>
        <artifactId>spel-extensionartifactId>
        <version>1.0.0version>
        <scope>providedscope>
    dependency>
    

    build.gradle.kts

    dependencies {
        compileOnly("kim.nzxy:spel-extension:1.0.0")
    }
    

    build.gradle

    dependencies {
        compileOnly 'kim.nzxy:spel-extension:1.0.0'
    }
    
  2. 在IDEA中搜索并安装SpEL Extension插件, 安装后无需重启

使用

如图所示, 支持两种情况的代码提示

  1. SpELMethod/SpELField注解放到注解的字段上, 即可添加相应的代码提示支持功能
  2. SpELWith注解标注的普通的java字段中, 即可给出对应注解的代码提示(注: 仅支持标注了SpELMethodSpELField的字段, 暂不支持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

@kim.nzxy.spel.SpELWith–方便定义常量

如果参数特别长, 可以用来方便的定义常量, 此注解可以方便的在常量字符串中支持代码提示

名称 类型 默认值 解释
anno Class \ 对应注解
field String “value” 对应注解字段名称

TODO

  • 支持配置文件配置, 免去引入spel-extension
  • 支持配置SpEL自定义函数
  • 支持自动推荐插件安装

你可能感兴趣的:(intellij-idea,java,ide,spring,spring,boot)