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

Spring启动报错:创建CommandService Bean失败 读写方法类型不匹配

异常核心信息

向监听器类com.thomson.live.wca.web.listener.WCAListener实例发送上下文初始化事件时抛出异常,嵌套调用链路如下:

  1. 最外层:org.springframework.beans.factory.BeanCreationException,创建名为mbeanExporter的Bean时init方法调用失败
  2. 第一层嵌套:org.springframework.beans.factory.BeanCreationException,ServletContext资源/WEB-INF/spring/spring-config.xml中定义的名为CommandService的Bean初始化失败
  3. 第二层嵌套:org.springframework.beans.FatalBeanException,获取类com.thomsonreuters.wlb.news.command.impl.CommandService的BeanInfo失败
  4. 根异常:java.beans.IntrospectionException: type mismatch between read and write methods,即类属性的读写方法类型不匹配
    注:异常栈所有类名、方法名、行号均保留原始内容未做修改
根因定位
  • 直接报错原因:Spring的mbeanExporter在初始化阶段会扫描容器内所有Bean,通过Java内省机制解析Bean属性生成JMX MBean元数据。扫描到com.thomsonreuters.wlb.news.command.impl.CommandService类时,内省检测到该类存在不符合JavaBean规范的属性:某属性的getter方法返回值类型和对应setter方法的入参类型不匹配,直接抛出IntrospectionException,顺着调用链最终导致上下文初始化失败。
  • 配置层面隐患:pom.xml存在多处错误配置,容易引发类冲突、依赖缺失等问题,间接提升这类异常的排查难度:
    • 项目整体基于Spring 3.x开发,却错误引入2.6.6版本的Spring Boot打包插件,两个大版本的Spring类路径存在大量不兼容,极易出现类版本覆盖问题
    • spring-web依赖错误配置了<type>pom</type>,会导致实际依赖引入失效或引入错误版本的类
    • 冗余配置了spring-asm依赖还设置了自排除规则,属于完全无用的配置,徒增配置复杂度
修复方案

按优先级从高到低操作:

1. 修复CommandService类的JavaBean不规范问题

这是触发报错的直接原因,必须优先处理:

  • 打开CommandService类源码,逐行核对所有属性的get/set方法对:
    • 保证同名属性的getter返回值类型和setter入参类型完全一致,不允许出现类型不匹配的情况
    • 重点排查布尔类型属性:避免出现isXxx()返回Boolean包装类、但setXxx()入参是boolean基本类型,或者反过来的写法;也不要出现getter返回子类类型、setter入参是父类类型的写法
    • 如果存在set方法重载,要确保和属性对应的set方法参数类型和getter返回值匹配,避免Java内省机制误识别到重载的错误方法
  • 临时绕过方案(仅用于紧急恢复启动,不建议长期使用):如果不需要把CommandService暴露为JMX MBean,可以在Spring配置文件中给mbeanExporter配置排除规则,跳过该Bean的JMX解析:
<bean id="mbeanExporter" class="org.springframework.jmx.export.MBeanExporter">
    <property name="excludedBeans" value="CommandService"/>
    <!-- 保留该bean原有的其他配置项 -->
</bean>

2. 清理pom.xml中的错误配置

避免后续出现其他依赖冲突类问题:

  • 直接删除spring-asm依赖:Spring 3.1.2版本已经内置了asm相关的类,不需要单独引入,当前配置的自排除规则本身就没有实际引入该依赖,属于冗余配置
  • 修正spring-web依赖配置:删除<type>pom</type>这行配置,spring-web是jar类型依赖,错误配置type会导致依赖引入异常
  • 直接删除spring-boot-maven-plugin插件配置:该项目是传统Spring MVC的war包项目,不是Spring Boot项目,引入跨大版本的Spring Boot插件会导致打包、运行时的类冲突问题
  • 统一所有Spring相关依赖(spring-core、spring-beans、spring-web、spring-webmvc、spring-test等)的版本号,确保所有Spring包版本完全一致,禁止混装不同版本的Spring组件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:33:34