Spring引导REST调用从外部JAR返回控制器上的404

时间:2016-02-16 21:20:06

标签: java spring rest jar spring-boot

我创建了一个外部JAR,其中包含一个简单的Spring REST控制器,其中包含以下代码:

@RestController
@RequestMapping("/hello")
public class HelloController {

  @RequestMapping(value = "/world")
  public Hello hello() {
    System.out.println("HELLO WORLD");
    return new Hello(1L, "Hello World");
  }

}

然后我将这个小项目编译成一个名为 hello.jar 的jar,然后我将其添加到Spring Boot应用程序的类路径中并启动应用程序。

我还将包添加到ComponentScan,如下所示:

@SpringBootApplication
@Configuration
// @Controller
// @org.springframework.context.annotation.Configuration
@ComponentScan(basePackages = {"main.java.foo.hello" })
@EnableEntityLinks
@EnableAutoConfiguration
public class Main {

  public static void main(final String[] args) throws Exception {

    ClassLoader classLoader = ClassLoader.getSystemClassLoader();
    URL[] urls = ((URLClassLoader)classLoader).getURLs();
    for (URL url : urls) {
      if (url.getPath().contains("hello")) {
        System.out.println(url.getPath());
      }
    }

    SpringApplication.run(Main.class);
  }
}

由于打印出来,我可以看到jar被加载到应用程序中,并且通过向Spring Boot Application添加日志记录,我可以看到Controller被扫描并被拾取(或者至少看起来是这样)。

然而,我浏览(通过chrome)或进行REST调用(通过Advance REST客户端)到“ localhost:8765 / hello / world ”(我启动了端口8765上的服务器),我收到404错误。

其他Rest控制器(来自应用程序内部,而不是外部JAR)似乎工作正常,因为所有REST调用都会返回相应的结果。

有谁认为他们知道为什么要归还404?

0 个答案:

没有答案