Skip to content

Mock字段注入异常 #5239

@ksyzz

Description

@ksyzz

环境

  • Dubbo version: 2.7.3
  • Operating System version: win10
  • Java version: 1.8.0_101
  • Dubbo-spring-boot-starter version: 2.7.3
  • Spring-boot-starter version: 2.1.3.RELEASE

问题描述

  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
  1. 调试发现在将dubbo.consumer.mock赋值给AbstractMethodConfing时,调用的是setMock(Boolean) 而不是setMock(String)。
  2. spring在获取字段的set方法时,用到了Class.getDeclaredMethods(),这个方法返回结果是无序的,这样导致了如果先加载了setMock(String),那么项目会成功启动,反之,则会出现上面说的错误。

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions