Spring版本:4.2.6.RELEASE 码头版本:9.3.9.v20160517
我有一个带有SpringMVC的嵌入式Jetty服务器,配置如下:
package test;
public class WebServer {
public static void main(String[] args) throws Exception {
AnnotationConfigWebApplicationContext spring = new AnnotationConfigWebApplicationContext();
spring.scan("test");
DispatcherServlet servlet = new DispatcherServlet(spring);
ServletHolder servletHolder = new ServletHolder(servlet);
servletHolder.setName("spring");
ServletContextHandler springHandler = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
springHandler.setContextPath("/endpoint");
springHandler.addServlet(servletHolder, "/*");
springHandler.setErrorHandler(null);
springHandler.addEventListener(new ContextLoaderListener(spring));
Server server = new Server(9290);
server.setHandler(springHandler);
server.setStopAtShutdown(true);
server.start();
server.join();
}
}
我也有这个控制器:
package test;
@RestController
public class AController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public ResponseEntity<String> testGet() {
return new ResponseEntity<>("GET response", null, HttpStatus.OK);
}
@RequestMapping(value = "/", method = RequestMethod.POST)
public ResponseEntity<String> testPost() {
return new ResponseEntity<>("POST response", null, HttpStatus.OK);
}
}
当我向localhost:9290/endpoint
发出POST时,testGet()
方法已执行,因为我正在接收GET response
。
但是,如果我将POST发送到localhost:9290/endpoint/
(注意结尾处的斜杠),则会按预期执行testPost()
方法。
这是Jetty还是Spring bug?我希望接收404或testPost()
方法而不是testGet
方法。