LocalVariableTableParameterNameDiscoverer
已在 6.1 中删除。因此,Spring 框架和 Spring 组合框架中的代码不再尝试通过解析字节码来推断参数名称。如果您遇到依赖项注入、属性绑定、SpEL 表达式或其他依赖于参数名称的用例的问题,则应使用通用 Java 8+ 标志-parameters
来保留参数名称来编译 Java 源代码(而不是依赖于-debug
编译器)标志)以便与StandardReflectionParameterNameDiscoverer
. Groovy 编译器还支持-parameters
用于相同目的的标志。对于 Kotlin 编译器,请使用该-java-parameters
标志。
Maven用户需要maven-compiler-plugin
为Java源代码配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<parameters>true</parameters>
</configuration>
</plugin>
Gradle 用户需要JavaCompile
使用 Kotlin DSL 配置 Java 源代码的任务:
tasks.withType<JavaCompile>() {
options.compilerArgs.add("-parameters")
}
或者 Groovy DSL:
tasks.withType(JavaCompile).configureEach {
options.compilerArgs.add("-parameters")
}
同样,Gradle 用户需要GroovyCompile
使用 Kotlin DSL 为 Groovy 源代码配置任务:
tasks.withType<GroovyCompile>() {
groovyOptions.parameters = true
}
或者 Groovy DSL:
tasks.withType(GroovyCompile).configureEach {
groovyOptions.parameters = true
}
有时还需要手动配置您的 IDE。
在 IntelliJ IDEA 中,打开Settings
并添加-parameters
到以下字段。
- 构建、执行、部署→编译器→Java编译器→附加命令行参数
在 Eclipse IDE 中,打开Preferences
并激活以下复选框。
- Java → 编译器 → 存储有关方法参数的信息(可通过反射使用)