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

示意图片

背景

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

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

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

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

安装

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

    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'
    }
    
  2. 在IDEA中搜索并安装SpEL Extension插件, 安装后无需重启

使用

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

  1. SpELMethod/SpELField注解放到注解的字段上, 即可添加相应的代码提示支持功能
  2. SpELWith注解标注的普通的java字段中, 即可给出对应注解的代码提示(注: 仅支持标注了SpELMethodSpELField的字段, 暂不支持Spring原生字段)

注解详解

@kim.nzxy.spel.SpELMethod----函数相关

如果标注了SpELMethod的注解作用于方法上, 则提示方法的返回值和参数信息

名称类型默认值解释
resultbooleanfalse为true则支持方法返回值
resultNameString“result”方法返回值的变量名称
parametersbooleanfalse为true表示支持方法参数, 默认支持所有参数名称
parametersPrefixString[]{“p”, “a”}方法参数序号名称, 如p0/a0表示第一个参数 如不需要, 可手动指定parametersPrefix = {}

@kim.nzxy.spel.SpELField–字段相关

定义该字段的变量参数, 支持定义多个

名称类型默认值解释
nameString\SpEL变量名, 如果为"root", 则视为SpEL的root节点
typeClass<?>Object.class变量类型, 如果typeStr非空, 则忽略此字段
typeStrString“”变量类型, 支持泛型, 示例: String, java.lang.String, java.util.List<String>

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

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

名称类型默认值解释
annoClass<? extends Annotation>\对应注解
fieldString“value”对应注解字段名称

TODO

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/256276.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙原生应用/元服务开发-Stage模型能力接口(七)

ohos.app.ability.EnvironmentCallback (EnvironmentCallback)一、说明 EnvironmentCallback模块提供应用上下文ApplicationContext对系统环境变化监听回调的能力&#xff0c;包括onConfigurationUpdated方法。本模块首批接口从API version 9 开始支持。后续版本的新增接口&…

Oracle11g登录方法

刚部署完Oracle11g可以使用如下方法登录 方法1 sqlplus sys/oracle as sysdba; 用系统用户登录 create user xy identified by test123; 创建用户 grant connect, resource,dba to xy; 授予权限 之后退出执行sqlplus登录命令 使用创建的用户登录 方法2 sqlplus ---登录…

计算机网络(四)

九、网络安全 &#xff08;一&#xff09;什么是网络安全&#xff1f; A、网络安全状况 分布式反射攻击逐渐成为拒绝攻击的重要形式 涉及重要行业和政府部门的高危漏洞事件增多。 基础应用和通用软硬件漏洞风险凸显&#xff08;“心脏出血”&#xff0c;“破壳”等&#x…

基于springboot+mybatis +mysql+vue人力资源管理系统(含论文)

基于springbootmybatis mysqljsp图书管理系统 一、系统介绍二、功能展示1.系统功能结构图2.登录3.个人信息编辑4.修改密码5.首页图表展示6.菜单分配7.员工请假8考勤数据导入 四、获取源码 一、系统介绍 本系统主要分四个模块&#xff0c;分别是系统管理和权限管理、薪资管理、…

计算机与自动诊疗仓:技术医学的新篇章

计算机与自动诊疗仓&#xff1a;技术医学的新篇章 一、引言 在当今的数字化时代&#xff0c;计算机科学技术与医学的结合已经成为医疗领域创新的重要驱动力。其中&#xff0c;自动诊疗仓的发展更是引领了技术医学的新潮流&#xff0c;为医疗服务带来了革命性的变革。本文将详…

Python爬虫全解析

一.爬虫--requests 1.常见的爬虫 -通用爬虫: 抓取系统重要组成部分。抓取的是一整张页面数据。 -聚焦爬虫: 是建立在通用爬虫的基础之上。抓取的是页面中特定的局部内容。 -增量式爬虫: 检测网站中数据更新的情况。只会抓取网站中最新更新出来的数据。 2.requests模块 re…

《代码随想录》--二叉树(一)

《代码随想录》--二叉树 第一部分 1、二叉树的递归遍历2、二叉树的迭代遍历3、统一风格的迭代遍历代码4、二叉树的层序遍历226.翻转二叉树 1、二叉树的递归遍历 前序遍历 中序遍历 后序遍历 代码 前序遍历 class Solution {public List<Integer> preorderTraversal(T…

HTML5+CSS3小实例:纯CSS实现网站置灰

实例:纯CSS实现网站置灰 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content="…

HTML audio设置.currentTime而实际播放位置不准确

可能是因为 .mp3 文件为 VBR 编码&#xff0c;使用 Au 等工具将文件转为 CBR 编码即可&#xff0c;或其他文件格式。

写开发信的技巧有哪些?做邮件的注意事项?

做外贸写开发信的技巧分析&#xff1f;如何写好外贸开发信邮件&#xff1f; 开发信是一种不可或缺的工具&#xff0c;它用于建立联系、推销产品或服务&#xff0c;以及与潜在客户建立有意义的关系。然而&#xff0c;要写出引人注目且有效果的开发信并不容易。蜂邮将介绍一些开…

idea过往各版本下载

idea过往各版本下载 https://www.jetbrains.com/zh-cn/idea/download/other.html

十问ByteHouse:如何基于ClickHouse玩转向量检索?

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 向量检索被广泛使用于以图搜图、内容推荐以及大模型推理等场景。随着业务升级与 AI 技术的广泛使用&#xff0c;用户期望处理的向量数据规模越来越大&#xff0c;对…

格密码与线性代数

目录 一. 幺模矩阵 二. Gram-Schmidt 正交化 三. 矩阵分解 四. 格基本区 五. 对偶格基 六. 矩阵伪逆 七. 正定矩阵 八. 矩阵转置 九. 奇异值分解&#xff08;SVD分解&#xff09; 格密码中格基是矩阵&#xff0c;格点是向量。本文章梳理一些格密码常用到的一些线性代数…

Docker使用3-Share the application

写在前面 本文主题是Share the application&#xff0c;这里是链接。本文主要学习如何将镜像image上传到Docker Hub 创建仓库 创建并登录Docker Hub登录后点击Create Repository按钮仓库名填写getting-started&#xff0c;确保仓库权限为公开的点击Create按钮 推送镜像 在…

linux系统下可用的语音转文字方法(Fish Speech)

推荐一款Linux下可用的&#xff0c;全新的文本转语音(TTS)&#xff0c;计算机朗读文本—Fish Speech Fish Speech具有高度自定义和灵活性&#xff0c;目前支持Linux和Windows系统。 运行需要2GB的GPU内存进行运算&#xff0c;使用Flash-Attn进行推理和训练&#xff0c;支持VQGA…

【Python】—— pandas数据处理

Pandas 提供了丰富的数据处理功能&#xff0c;涵盖了从数据导入、清理、转换到分析和可视化的方方面面。以下是一份关于 Pandas 数据处理的主要内容&#xff1a; 1. 数据导入和导出 导入数据&#xff1a; import pandas as pd# 从 CSV 文件导入 df pd.read_csv(data.csv)# 从…

闵帆老师《论文写作》课后感悟

文章目录 前言一、学术论文二、使用Latex工具撰写论文三、论文题目四、论文摘要五、论文关键词六、论文引言七、文献综述八、算法伪代码九、实验部分十、论文结论十一、参考文献十二、其他注意事项总结 前言 本篇文章是学习了本学期《论文写作》课程之后&#xff0c;收获良多。…

spring boot版本升级遇到的一些问题

背景&#xff1a;由于项目需求&#xff0c;需要将nacos 1.4.6版本升级到2.x版本&#xff0c;由此引发的springboot、springcloud、springcloud Alibaba一系列版本变更。 旧版本分别为&#xff1a; Spring Boot 2.3.5.RELEASE Spring Cloud Hoxton.SR9 Spring Cloud Alibaba 2.2…

【09】ServiceEntry使用案例

案例背景 为了便于测试&#xff0c;我们用非网格化的名称空间中运行的应用来模拟运行于VM/萝服务上的外部服务&#xff0c;假设&#xff1a; 在网格外部运行nginx服务&#xff0c;有2个实例 Nginx2001:监听地址为172.29.1.201:8091&#xff0c;nginx版本为1.20nginx2002&#x…

HTML_有哪些字体样式及使用

文章目录 &#x1f431;‍&#x1f409;一、字体样式的基本概念&#xff1a;&#x1f431;‍&#x1f409;二、css字体样式属性有&#xff1a;&#x1f923;1、设置字体类型&#xff08;font-family&#xff09;&#x1f923;2、设置字体大小&#xff08;font-size&#xff09;…