IDEA SpEL如何提示出方法参数

本文介绍如何在IDEA中使用SpELAssistant插件解决SpringAOP中SpEL表达式不支持方法参数提示的问题,包括安装步骤、配置自定义字段和注解支持等内容。
摘要由CSDN通过智能技术生成

想写个Spring的第三方库,想做个AOP拦截, 但是IDEA不支持SpEL表达式提示, 即便是用了@Language注解, 也不支持方法参数提示怎么办?

别慌, 现在可以使用SpEL Assistant插件来完成这个功能啦

SpEL Assistant插件支持方法参数提示, 函数返回值提示, 自定义字段, root字段配置等等功能

支持javakotlin

来看看怎么用吧

安装插件

IDEA应用商店直接下载安装, 某些版本安装后需要重启IDEA

image-20240118085007173

使用

  1. 在resources目录下新建spel-extension.json配置文件

  2. 将注解类名和注解方法名用@符号连接起来(有提示的哦)

    image-20240118085649278

  3. 配置自己需要的字段, 以及该注解支持的内容

  4. 然后就支持代码提示啦

    image-20240118090057638

附: 问题反馈

配置详解

{
   // 注解声明, 格式为`注解类@字段`
   "kim.nzxy.demo.DemoAop@value": {
      // 模板前缀, 为null和空字符串表示非模板, 默认为空
      "prefix": "#{",
      // 模板后缀, 为null和空字符串表示非模板, 默认为空
      "suffix": "}",
      // 对方法的扩展, 默认值如示例
      "method": {
         // 作用于方法上时, 支持方法返回值提示
         "result": false,
         // 方法返回值的SpEL变量名
         "resultName": "result",
         // 作用于方法上时, 支持方法参数提示
         "parameters": false,
         // 方法参数别名配置, 支持多个别名前缀, 如 [p0, a1, p2]分表表示第一个, 第二个, 第三个参数, 可空 
         "parametersPrefix": [
            "p",
            "a"
         ]
      },
      // 自定义字段, 默认为空
      "fields": {
         // 自定义变量以及类型, 支持非限定类名, 如String, Integer等, 否则需提供全限定类名
         "demo": "java.util.Map<String, String>",
         // 如果变量名为root, 则表示rootObject(可以直接)
         "root": "kim.nzxy.demo.DemoRoot"
      }
   }
}
  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring中,可以使用SpEL表达式绑定方法参数。具体步骤如下: 1. 在方法参数上添加@org.springframework.web.bind.annotation.RequestParam注解(或其他适当的注解),并指定SpEL表达式作为其属性值。 2. 在方法上添加@org.springframework.web.bind.annotation.GetMapping(或其他适当的注解),并设置其value属性来指定请求的URL。 3. 在应用程序上下文中配置一个DefaultSpELExpressionParser bean。 4. 在方法参数上添加@org.springframework.beans.factory.annotation.Value注解,并使用SpEL表达式引用应用程序上下文中的bean。 例如,以下代码展示了如何在Spring MVC中使用SpEL表达式绑定方法参数: ```java @RestController public class MyController { @GetMapping("/user/{id}") public User getUserById(@PathVariable("id") int id, @RequestParam("#{systemProperties['user.language']}") String language, @Value("#{myService.someProperty}") String someProperty) { // ... } } ``` 在上面的代码中,getUserById方法使用@PathVariable注解将URL路径中的{id}绑定到方法参数id上。然后,它使用@RequestParam注解将请求参数language绑定到方法参数language上,这里的SpEL表达式#{systemProperties['user.language']}将系统属性user.language的值作为参数传递给方法。最后,它使用@Value注解将应用程序上下文中名为myService的bean的someProperty属性绑定到方法参数someProperty上,这里的SpEL表达式#{myService.someProperty}将该属性的值作为参数传递给方法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值