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

ServletRegistrationBean<MessageDispatcherServlet>有界不匹配错误求解

问题分析与修复方案

嘿,我帮你梳理下代码里的问题,你遇到的有界不匹配和编译错误主要来自这几个点:

1. 多余的servletContext.addServlet调用

你完全不需要手动调用这行代码来注册Servlet!ServletRegistrationBean本身就是Spring Boot用来帮你注册Servlet的封装类,只要把这个Bean交给Spring容器,它会自动完成注册流程。而且你这里的servletContext变量既没声明也没传参,这本身就是个编译错误,直接删掉这行就行。

2. 泛型边界不匹配的根源

如果确实弹出有界不匹配的错误,大概率是你导入的MessageDispatcherServlet不对。Spring WS里的MessageDispatcherServlet是继承自HttpServlet的,完全符合ServletRegistrationBean泛型要求的? extends Servlet边界。请检查你的导入语句,必须是Spring Web Services的官方实现:

import org.springframework.ws.transport.http.MessageDispatcherServlet;

要是导入了其他包下的同名类,就会出现泛型不兼容的问题。

修复后的完整代码

这是修正后的方法,解决了所有问题:

public ServletRegistrationBean<MessageDispatcherServlet> requestDispatcher(ApplicationContext context) {
    MessageDispatcherServlet msd = new MessageDispatcherServlet();
    msd.setApplicationContext(context);
    msd.setTransformWsdlLocations(true);
    // 去掉了多余的addServlet调用,修正了参数拼写错误(conext→context)
    return new ServletRegistrationBean<>(msd, "/soap/*");
}

额外小提醒

  • 你之前把context拼写成了conext,虽然这不是泛型错误的原因,但会影响代码正确性,已经帮你修正了。
  • 确保项目里已经引入了Spring Web Services的依赖(比如Maven的spring-ws-core),不然MessageDispatcherServlet类会找不到哦。

内容的提问来源于stack exchange,提问作者dori rozen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 17:36:11