Spring Boot请求/addUser报无映射错误但Controller已配置如何解决?
问题原因及解决方案
1 核心问题:Web MVC自动配置被错误禁用
你在LoginApplication类的@EnableAutoConfiguration注解中,主动排除了WebMvcAutoConfiguration.class,该类是Spring Boot实现Spring MVC自动配置的核心依赖,负责请求映射扫描、DispatcherServlet注册等核心功能,禁用后Spring不会识别Controller中配置的@RequestMapping注解,因此会返回No mapping for POST /addUser的错误。
修复方式:将WebMvcAutoConfiguration从排除列表中移除,修改后的启动类代码如下:
package com.example.login; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; @SpringBootApplication @EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class}) public class LoginApplication { public static void main(String[] args) { SpringApplication.run(LoginApplication.class, args); } }
2 冗余注解问题
UserController类上同时标注了@Controller和@RestController,属于冗余配置:@RestController本身已经组合了@Controller和@ResponseBody注解,直接删除类上的@Controller注解即可。
3 删除接口路径配置错误
deleteUser方法中使用了@PathVariable接收id参数,但对应的@RequestMapping没有配置路径占位符,调用该接口时会报错,修改为如下配置即可:
@RequestMapping(path = "/removeUser/{id}", method = RequestMethod.DELETE) public String deleteUser(@PathVariable String id) { userRepository.deleteById(id); return "removed user with id" + id; }
4 MongoDB连接异常处理
日志中的MongoSocketReadException: Prematurely reached end of stream错误,通常是MongoDB Atlas的IP白名单未添加你本地的公网IP、Mongo连接串的用户名/密码配置错误、或者本地网络无法访问Mongo服务器导致,依次检查上述配置即可解决。
内容的提问来源于stack exchange,提问作者cspurdue
相关产品推荐
相关产品推荐

