我创建了一个外部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?