【问题标题】:@RequestMapping doesn't seem to work for Groovy class@RequestMapping 似乎不适用于 Groovy 类
【发布时间】:2015-08-15 07:44:07
【问题描述】:

我按照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 进行构建,并且应用了“groovy”插件。代码被正确编译,所有类最终都在同一个位置。令人沮丧的是,几个月前我在另一个项目中工作过,但我再也无法访问那个源代码了。总而言之,这里是 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。一切都编译得很好,启动时没有错误,但实际上只有 Java 类中的“/test”@RequestMapping 被映射。编译后的类在构建后最终位于同一目录中。 Java 和 Groovy 文件的代码基本相同。我错过了什么?顺便说一句,我正在运行 Spring Boot 1.2.3、Groovy 2.3.9 和 Oracle 的 JDK 1.8.0_25,以防万一。

【问题讨论】:

  • 我可以看到您的 TestController 不是公开的,而且 hello() 方法也是如此。!
  • Ramesh,Groovy 可见性规则规定类和方法本质上都是公共的,因此无需将它们声明为公共的。如果我检查编译的类,方法声明如下所示: // 方法描述符 #35 ()Lorg/springframework/http/HttpEntity; // 签名:()Lorg/springframework/http/HttpEntity; // Stack: 6, Locals: 2 @org.springframework.web.bind.annotation.RequestMapping(value={"/othertest"}) @org.springframework.web.bind.annotation.ResponseBody public org.springframework.http. HttpEntity hello();
  • 我不太了解 groovy,我只是认为这是问题所在。

标签: spring-mvc spring-boot


【解决方案1】:

哇,这是另一种归类为奇异事物的东西。如果我将 'org.springframework:spring-webmvc:4.1.6.RELEASE' 显式添加到 Gradle 依赖项中,Groovy 控制器会突然开始工作。没有解释为什么 Java 在没有它的情况下工作,或者为什么没有选择 Groovy 代码。那好吧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-04
    • 2023-04-06
    • 2017-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多