Spring Boot groovy编译错误:意外标记@@45行

Spring Boot groovy编译错误:意外标记@@45行,groovy,annotations,spring-boot,Groovy,Annotations,Spring Boot,我试图将Spring Boot项目中的Java控制器转换为Groovy,并在尝试编译和运行时遇到最奇怪的错误 unexpected token: @ @ line 45, column 5 @RequestMapping(value = {"/v1/foo", "/foo"}, method = GET) ^ 这让我感到困惑。注释是Java或Groovy中的注释,对吗?我错过了什么?这是我的代码的一个抽象 // src/main/groovy/my/package/FooController.

我试图将Spring Boot项目中的Java控制器转换为Groovy,并在尝试编译和运行时遇到最奇怪的错误

unexpected token: @ @ line 45, column 5
@RequestMapping(value = {"/v1/foo", "/foo"}, method = GET)
^
这让我感到困惑。注释是Java或Groovy中的注释,对吗?我错过了什么?这是我的代码的一个抽象

// src/main/groovy/my/package/FooController.groovy, formerly .java

/// ... proper imports

@RestController
@EnableAutoConfiguration
public class FooController {

    // ... @autowire services

    @RequestMapping(value = {"/v1/foo", "/foo"}, method = GET)
    public ResponseEntity get(@RequestHeader HttpHeaders headers) {
      // do work return ResponseEntity
    }

    @RequestMapping(value = {"/v1/foo", "/foo"}, method = PUT)
    public ResponseEntity put(@RequestHeader HttpHeaders headers, @ResponseBody @Valid final MyFoo myFoo) {
      // do work return ResponseEntity
    }
}

所以我只是个傻瓜,错过了Java和Groovy之间的一个关键区别

问题是我传递给
@RequestMapping

在Java中,
{/v1/foo”,“foo”}
是一个数组文本

在Groovy中,
{/v1/foo”,“foo”}
是一个闭包

错误消息显然没有帮助,但要解决这个问题,我只需要更改Groovy中的注释,以便按照我的意图传递数组文本,而不是闭包

@RequestMapping(value = ["/v1/foo", "/foo"], method = GET)