Spring boot 如何调试Spring引导处理程序映射问题

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

我刚刚接管了一个基于SpringMVC的代码库项目,它的REST端点不工作

@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意味着它已启用