@RequestMapping似乎不适用于Groovy类

时间:2015-06-01 18:17:36

标签: spring-mvc spring-boot

我按照http://spring.io/guides/gs/rest-service/的配方创建了一个新的Spring Boot REST项目 我可以得到" Hello World"项目工作(它的Java代码)。服务器映射路径" / test"并在我连接时返回数据。但是,如果我尝试在Groovy中创建一个类似的控制器,它就不会被映射。我的groovy类存在于src / main / groovy / hello中,而教程中的Java类存在于src / main / java中。我正在使用Gradle 2.4构建,并且我已经应用了#growary'插入。代码被正确编译,所有类最终都在同一个位置。令人沮丧的是,我几个月前在另一个项目中工作过,但我再也无法访问该源代码了。总结一下,这里是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)
  }
}

我在类路径上有groovy-all jar以及spring-boot-starter-web jar。一切都编译好,没有错误启动,但只有&#34; / test&#34;来自Java类的@RequestMapping实际上被映射。编译后的类在构建后最终在同一目录中。 Java和Groovy文件之间的代码基本相同。我错过了什么?顺便说一句,我正在运行Spring Boot 1.2.3,Groovy 2.3.9和Oracle的JDK 1.8.0_25以防万一。

1 个答案:

答案 0 :(得分:1)

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