Spring MVC无法找到OrderController映射及@NonNullApi告警问题求助
问题1:getServletMappings方法的@NonNullApi告警解决
告警触发原因:你继承的AbstractAnnotationConfigDispatcherServletInitializer所在的org.springframework.web.servlet.support包,Spring官方已标注类级别的@NonNullApi注解,约定该包下所有方法的返回值、入参默认非空。你重写的方法没有显式声明返回值非空,触发IDE的空安全静态检查告警。
解决方法二选一即可:
- 给重写的三个方法加上Spring提供的
@NonNull注解,示例:
import org.springframework.lang.NonNull; @Override @NonNull protected String[] getServletMappings() { return new String[] { "/api/*" }; }
所有三个重写方法都加上注解即可消除告警。
- 若不需要严格空安全检查,直接给Initializer类加上
@SuppressWarnings("null")注解,忽略空检查告警。
问题2:接口访问404解决
问题根源:你配置类的@ComponentScan仅配置了扫描model包,位于controllers包下的OrderController没有被Spring扫描到,自然不会注册接口映射。
修复步骤:
- 修改Config类的@ComponentScan注解,加入controllers包的扫描路径:
@ComponentScan(basePackages = {"model", "controllers"})
- 确认
OrderDAO类已经加了@Repository或者@Component注解,且位于model包下,否则会出现依赖注入失败异常。 - 访问接口时注意路径前缀:你配置的DispatcherServlet映射路径是
/api/*,所以正确的访问路径格式为http://你的服务地址/应用上下文/api/orders,不要遗漏/api前缀。
内容的提问来源于stack exchange,提问作者Steb
相关产品推荐
相关产品推荐

