You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot 1.5.14控制器无法通过Postman访问,报404错误

Spring Boot集成Jersey客户端后控制器404问题排查与解决

问题场景

我正在创建一个集成**Jersey客户端(2.25.1,org.glassfish.jersey.core)**的Spring Boot 1.5.14.RELEASE简易应用。应用启动正常,但调用控制器方法时无响应,Postman返回404 Not Found。

控制器类代码片段

@EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class, DataSourceAutoConfiguration.class})
@RequestMapping("/report")
public class ReportProcessController {

目标访问方法代码片段

@RequestMapping(value = "/email", method = RequestMethod.GET)
@ResponseBody
public String sendEmail(HttpServletResponse response) {

问题原因及解决方案

1. 控制器缺少必要注解

Spring无法识别仅带有@RequestMapping的类为控制器组件,必须添加@Controller或@RestController注解。由于方法已使用@ResponseBody,推荐直接使用@RestController(等价于@Controller + @ResponseBody):

@RestController
@EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class, DataSourceAutoConfiguration.class})
@RequestMapping("/report")
public class ReportProcessController {

2. 包扫描范围不匹配

Spring Boot默认仅扫描主启动类所在包及其子包下的组件。如果ReportProcessController不在该范围内,需在主启动类添加@ComponentScan指定扫描路径:

@SpringBootApplication
@ComponentScan(basePackages = {"com.yourpackage.controller", "其他需要扫描的包路径"})
public class YourApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

3. Jersey与Spring MVC路由冲突

集成Jersey时,若配置了Jersey的Servlet容器,可能会覆盖Spring MVC的DispatcherServlet,导致Spring MVC控制器无法被路由:

  • 若需同时使用两者:为Jersey配置独立的路径前缀,比如在Jersey配置类添加@ApplicationPath("/jersey-api"),让Jersey处理该前缀的请求,Spring MVC处理其他路径。
  • 若仅需Spring MVC:移除Jersey相关的配置类或依赖。

内容的提问来源于stack exchange,提问作者Rohit Tiwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 09:46:39