Spring boot 如何调试Spring引导处理程序映射问题
我刚刚接管了一个基于SpringMVC的代码库项目,它的REST端点不工作Spring boot 如何调试Spring引导处理程序映射问题,spring-boot,spring-mvc,Spring Boot,Spring Mvc,我刚刚接管了一个基于SpringMVC的代码库项目,它的REST端点不工作 @RestController public class RequestWeb { .... @PostMapping("/requests/v2") @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public ResponseEntity<?> postReq
@RestController
public class RequestWeb {
....
@PostMapping("/requests/v2")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public ResponseEntity<?> postRequestV2( //...
@RequestHeader(HEADER_FEATURES) String features, //...
@RequestBody requestBody requestBody //...
) {
...
}
}
@RestController
公共类请求Web{
....
@后映射(“/requests/v2”)
@产生(MediaType.APPLICATION_JSON)
@使用(MediaType.APPLICATION_JSON)
公共响应postRequestV2(//。。。
@RequestHeader(HEADER_功能)字符串功能,//。。。
@RequestBody RequestBody RequestBody/。。。
) {
...
}
}
rest控制器相关的注释等在我看来都是正确的。
主应用程序使用@springbootplication
,@ComponentScan
指定了正确的basePackages
我查看了组件ScanAnnotationParser
,上面的RestController
bean已经注册
当我在DispatcherServlet
类中的initHandlerMappings
添加断点时,只有三个匹配的bean,看起来是错误的
与我的另一个优秀的Spring MVC项目相比,我可以看到结果中缺少requestMappingHandlerMapping
我不知道为什么
@PostMapping
不起作用(它应该将bean类型更改为requestMappingHandlerMapping
?),我应该在Spring框架中的何处设置断点来调试此问题?您可以检查项目中是否添加了@EnableWebMvc吗?看起来您看到的是错误的DispatcherServlet
。我怀疑您的应用程序中有2个,因为类路径上有spring引导执行器,并且运行在不同的端口上。还有什么不起作用的问题我还不清楚,最后,@产生的
和@消耗的
不是Spring注释,而是JAX-RS注释,被Spring忽略。您应该在运行配置中添加--debug部分,并查找是否注册的bean。有时不同的bean会注册自动配置的一部分。@M.Deinum。我相信只有一个DispatchServlet,断点被击中了。该项目将SpringMVC和一些新泽西州的东西混合在一起,但它可以工作fine@akreddy.21SpringBoot在类路径上看到SpringWebMVC时会自动添加它。调用DispatcherServlet意味着它已启用