apache / dubbo

The java implementation of Apache Dubbo. An RPC and microservice framework.
https://dubbo.apache.org/
Apache License 2.0
40.4k stars 26.41k forks source link

Mock字段注入异常 #5239

Closed ksyzz closed 4 years ago

ksyzz commented 4 years ago

环境

问题描述

  1. 在application.properties中添加mock配置:dubbo.consumer.mock=return {"code":300,"message":"fail"}
  2. 项目启动失败,报错:
    Failed to bind properties under 'dubbo.consumer.mock' to java.lang.Boolean:
    Property: dubbo.consumer.mock
    Value: return {"code":300,"message":"fail"}
    Origin: class path resource [application.properties]:30:21
    Reason: failed to convert java.lang.String to java.lang.Boolean
  3. 调试发现在将dubbo.consumer.mock赋值给AbstractMethodConfing时,调用的是setMock(Boolean) 而不是setMock(String)。
  4. spring在获取字段的set方法时,用到了Class.getDeclaredMethods(),这个方法返回结果是无序的,这样导致了如果先加载了setMock(String),那么项目会成功启动,反之,则会出现上面说的错误。
wangkezun commented 4 years ago

可以给出完整的exception栈信息吗?

ksyzz commented 4 years ago

可以给出完整的exception栈信息吗?

控制台只输出了这些信息

ksyzz commented 4 years ago

请问为啥要写两个setMock方法,有什么特殊的地方吗