【问题标题】:Spring Boot groovy compilation error: Unexpected token @ @ line 45Spring Boot groovy 编译报错:Unexpected token@@line 45
【发布时间】:2015-07-14 21:03:33
【问题描述】:

我正在尝试将 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
    }
}

【问题讨论】:

    标签: groovy annotations spring-boot


    【解决方案1】:

    所以我很笨,错过了 Java 和 Groovy 之间的一个关键区别

    问题是我传递给@RequestMappingvalue

    在 Java 中,{"/v1/foo", "foo"} 是一个数组字面量

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-26
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      相关资源
      最近更新 更多