【问题标题】:SpringBoot 1.5.10.RELEASE: REST service keeps geting 404Spring Boot 1.5.10.RELEASE:REST 服务不断收到 404
【发布时间】:2018-09-16 14:47:04
【问题描述】:

我看到了几十个类似的帖子,但没有一个建议的解决方案对我有用。我有一个结构如下的 WAR:

文件夹“controller”包含一个 REST 控制器,代码如下:

@RestController
@RequestMapping("/api")
public class HmlRestController
{
  ...........
  @RequestMapping(value = "/myResource/", method = RequestMethod.POST)
  public ResponseEntity<?> myResource(@RequestBody HmlEvent hmlEvent)
  {
    ..........
  }
}

application.properties 文件具有以下条目:

server.context-path=/hml

在嵌入的 Tomcat 中运行 WAR 并转到 localhost:8080/hml 会显示 index.html 文件,但尝试 POST 到 localhost:8080/hml/api/myResource 会返回 HTTP 404。 如果我将此代码移动到 HmlApplication 类中,如下所示:

@SpringBootApplication
@RestController
@RequestMapping("/api")
public class HmlApplication
{
  public static void main(String[] args)
  {
    SpringApplication.run(HmlApplication.class, args);
  }

  @RequestMapping(value = "/myResource/", method = RequestMethod.POST)
  public ResponseEntity<?> myResource(@RequestBody HmlEvent hmlEvent)
  {
    ..........
  }`enter code here`
}

然后它按预期工作。 有人可以在这里点亮一些灯,让我知道这里发生了什么吗? 提前谢谢了, 尼古拉斯

【问题讨论】:

  • 你的控制器是否位于应用类包的子包中?
  • 是的。我尝试插入显示包层次结构的图像,但由于某种原因,它不起作用。所以是的,HmlApplication 类在 com.tests 中,而控制器类在 com.tests.controllers 中。

标签: java spring rest spring-boot


【解决方案1】:

我不知道到底发生了什么,但重新启动一切解决了这个问题。我唯一能想到的是,在 IntelliJ 会话期间,显示了一些关于几个 Spring 上下文的消息,我选择了默认操作。但我不再确定了。所以现在,我要关闭这个问题。 亲切的问候, 尼古拉斯

【讨论】:

    【解决方案2】:

    通过使用 Spring Boot 及其@SpringBootApplication,您可以自动启用组件扫描(请参阅@SpringBootApplication 注释上的@ComponentScan)。

    您没有提及您的包结构,但您的其他包层次结构应位于您的主应用程序下方,并带有@SpringBootApplication 注释,在您的情况下为HmlApplication

    您可以通过向应用程序类添加额外的 @ComponentScan 注释来显式添加包。

    @ComponentScan(“my.package”)
    @SpringBootApplication
    public class HmlApplication {
    

    【讨论】:

    • 是的,就是这样,HmlApplication 类位于包层次结构的根部。我不需要添加其他包。但是,找不到控制器,我一直收到 404。
    猜你喜欢
    • 2019-04-16
    • 2020-04-29
    • 1970-01-01
    • 2020-10-07
    • 2018-08-18
    • 1970-01-01
    • 2021-11-21
    • 2019-04-27
    • 2021-08-15
    相关资源
    最近更新 更多