Spring Boot控制器异常:访问/hello路由出现404白标错误
问题排查建议
从你提供的代码和日志来看,控制器本身的注解与路由配置没有语法错误,但Spring未成功注册/hello路由,导致访问时出现404白标错误。以下是具体排查步骤:
1. 检查包扫描范围
Spring Boot默认仅扫描启动类所在包及其子包下的组件。你的启动类GestionUsuariosApplication包路径为com.m.g,请确认UserController是否位于com.m.g或其子包(如com.m.g.controller)内。若控制器在外部包,需在启动类上添加@ComponentScan(basePackages = {"你的控制器包路径"})指定扫描范围。
2. 查看控制器注册日志
将Spring Boot日志级别调整为DEBUG,查看RequestMappingHandlerMapping相关日志,它会打印所有成功注册的请求映射:
- 在
application.properties中添加:logging.level.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=DEBUG
重启应用后,启动日志中应出现类似内容:
Mapped GET /hello onto public java.lang.String com.m.g.controller.UserController.sayHello()
若未出现该日志,说明控制器未被Spring容器加载。
3. 检查请求拦截配置
若引入了spring-boot-starter-security依赖,Spring Security默认会拦截所有请求,需配置放行/hello:
@Configuration public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.authorizeHttpRequests(auth -> auth .requestMatchers("/hello").permitAll() .anyRequest().authenticated() ); return http.build(); } }
同时检查是否存在自定义Filter或Interceptor,是否无意中拦截了/hello请求。
4. 验证控制器注解导入路径
确认UserController上的@RestController和@GetMapping注解来自Spring Web包:
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;
避免导入其他框架的同名注解。
5. 清理并重新构建项目
若编译生成的class文件存在异常,执行以下操作:
- Maven:运行
mvn clean install - Gradle:运行
gradle clean build
重启应用后,确认target/classes目录下生成了UserController.class文件。
内容的提问来源于stack exchange,提问作者killopolo
相关产品推荐
相关产品推荐

