如何使用Java 8 --parameter标志编译Spring Boot应用程序

San*_*jay 4 spring spring-mvc spring-boot

Spring文档告诉我们,如果我们使用Java 8 --parameters flag编译项目,我们可以跳过在@PathVariable等注释中给出参数名称.这意味着,我们可以使用@PathVariable id而不是@PathVariable("id") id.

在Spring Boot Maven应用程序中,我很想知道如何告诉编译器使用参数标志.它是默认打开的吗?我们需要在pom.xml中提供一些东西吗?

app*_*lue 9

在Spring Boot 2.0中,--parameters默认情况下应启用该标志.请参阅yuranos87的回答.

对于旧版本,在pom.xml文件中,您可以将Java编译器选项指定为Maven编译器插件的参数:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <compilerArgs>
            <arg>-parameters</arg>
        </compilerArgs>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)


yur*_*s87 8

我不记得需要在我的任何项目中明确地做到这一点.也许你只需要添加spring-boot-starter-parent(我知道,有时可能不是一个选项).否则,Spring已经为您处理了一切.

在Spring Boot文档中多次提到它.例如,这里:

要允许将输入映射到操作方法的参数,应使用-parameters编译实现端点的代码.如果您使用的是Spring Boot的Gradle插件,或者您使用的是Maven和spring-boot-starter-parent,则会自动执行此操作.

UPDATE

Spring Boot 的方式非常简单(在spring-boot-parent和spring-boot-starter-parent poms中):

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
                <parameters>true</parameters>
            </configuration>
        </plugin>
Run Code Online (Sandbox Code Playgroud)