@RequestMapping 似乎不适用于 Groovy class

@RequestMapping doesn't seem to work for Groovy class

我按照 http://spring.io/guides/gs/rest-service/ 中的方法创建了一个新的 Spring Boot REST 项目 我可以让 "Hello World" 项目运行(它是 Java 代码)。当我连接到服务器时,服务器会映射路径“/test”和 returns 数据。但是,如果我尝试在 Groovy 中创建一个类似的控制器,它不会被映射。我的 groovy class 住在 src/main/groovy/hello 而教程中的 Java class 住在 src/main/java。我正在使用 Gradle 2.4 进行构建,并且应用了 'groovy' 插件。代码得到正确编译,所有 classes 最终都在同一个位置。令人沮丧的是,几个月前我在另一个项目中工作过,但我无法再访问该源代码了。总而言之,这是 src/main/java/hello/GreetingController.java 中的 Java 代码:

@Controller
public class GreetingController {
  @RequestMapping("/test")
  @ResponseBody
  public HttpEntity<String> hello() {
    return new ResponseEntity<String>("hello", HttpStatus.OK);
  }
}

这是src/main/groovy/hello/TestController.groovy中对应的Groovy代码:

@Controller
class TestController {
  @RequestMapping("/othertest")
  @ResponseBody
  HttpEntity<String> hello() {
    return new ResponseEntity("hello", HttpStatus.OK)
  }
}

我在 class 路径上有 groovy-all jar 以及 spring-boot-starter-web jar。一切都编译得很好,启动时没有错误,但实际上只有 Java class 中的“/test” @RequestMapping 被映射。编译后的 classes 在构建后最终位于同一目录中。 Java 和 Groovy 文件的代码基本相同。我错过了什么?顺便说一句,我是 运行 Spring Boot 1.2.3、Groovy 2.3.9 和 Oracle 的 JDK 1.8。0_25 如果相关的话。

哇,这又是一个奇怪的东西。如果我明确地将 'org.springframework:spring-webmvc:4.1.6.RELEASE' 添加到 Gradle 依赖项,Groovy 控制器会突然开始工作。没有解释为什么 Java 在没有它的情况下工作,或者为什么 Groovy 代码没有被提取。那好吧。