在使用spring openfeign 中注解必须定义name

AK_诚 发布于 03/13 22:29
阅读 167
收藏 1

在使用openfeign框架时,有个很奇怪的问题,就是在使用

@RequestParam
@PathVariable

以上两个注解时,必须定义参数名,如果不定义,在请求时就会报异常,但是我通过查看源码发现,实际上本身有通过

spring的DefaultParameterNameDiscoverer获取参数名称,即springmvc也是通过这种方式来获取参数名,而不需要我们去定义参数名,很头痛,后来通过修改idea增加编译参数(必须jdk1.8以上才有效)

idea方式如下

技术分享图片

Eclipse中开启的办法

Preferences->java->Compiler下勾选Store information about method parameters选项。

Maven中开启的办法

在pom.xml的编译插件中增加参数配置<arg>-parameters</arg>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <compilerArgs>
            <arg>-parameters</arg>
        </compilerArgs>
    </configuration>
</plugin>

spring-boot-maven-plugin 中开启方法

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <jvmArguments>
            -parameters
        </jvmArguments>
    </configuration>
</plugin>

通过以上方式来编译java文件后,就不再需要在以上两个注解中定义参数名,问题虽然解决了,但是没搞明白为啥在使用spring mvc的时候就不需要增加这参数,希望有大神帮忙解答我的疑惑,我个人觉得openfeign既然出自同一家公司的产品,不至于对两个框架做不一致的处理方案,还让我么开发手动去处理,感觉显得有点多此一举

加载中
0
红薯官方
红薯官方

这是正常的!是因为,在JDK1.8之前的parameter是不能反射获取到参数的名称的,所以就需要在注解里面写!

AK_诚
AK_诚
spring mvc 在使用RequestParam注解时可以不定义name
返回顶部
顶部