我看到许多类似的帖子,但没有一个建议的解决方案对我有用。我有一个具有以下结构的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文件,但是尝试过帐到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`
}


然后它会按预期工作。
有人可以在这里给我点灯,让我知道这是怎么回事吗?
提前谢谢了,
尼古拉斯

最佳答案

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

您没有提到包的结构,但其他包层次结构应位于主应用程序的下面,并带有@SpringBootApplication批注,在本例中为HmlApplication

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

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

08-04 12:04