dubbo icon indicating copy to clipboard operation
dubbo copied to clipboard

support config ReferenceBean by the way of static @Bean method or @Bean method in @Component java config

Open jessin20161124 opened this issue 3 years ago • 2 comments

What is the purpose of the change

There exists bug when config ReferenceBean by the way of static @Bean method or @Bean method in @Component java config. You can run the following two tests in this pr:

  • dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional5/JavaConfigReferenceBeanConditionalTest5.java
  • dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional7/JavaConfigReferenceBeanConditionalTest7.java

Brief changelog

The original author use beanFactory#getType() as the ReferenceConfig's interface name, which may cause early instantiation but get null objectType in the case of static @Bean method or @Bean method in @Component java config bean to build ReferenceBean. Here I modify the above logic and just get the return generic type as interface name from the @Bean method at the registry time. And all the config ReferenceBean case with @Bean method is supported, the original usage is also compatible. When the ReferenceBean is configured in the same method name, I just get common ancestor of return generic type here like the spring internals do.

Verifying this change

  • dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional5/JavaConfigReferenceBeanConditionalTest5.java
  • dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional5/JavaConfigReferenceBeanConditionalTest6.java
  • dubbo-config/dubbo-config-spring/src/test/java/org/apache/dubbo/config/spring/boot/conditional7/JavaConfigReferenceBeanConditionalTest7.java

Checklist

  • [x] Make sure there is a GitHub_issue field for the change (usually before you start working on it). Trivial changes like typos do not require a GitHub issue. Your pull request should address just this issue, without pulling in other changes - one PR resolves one issue.
  • [ ] Each commit in the pull request should have a meaningful subject line and body.
  • [ ] Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • [ ] Check if is necessary to patch to Dubbo 3 if you are work on Dubbo 2.7
  • [ ] Write necessary unit-test to verify your logic correction, more mock a little better when cross module dependency exist. If the new feature or significant change is committed, please remember to add sample in dubbo samples project.
  • [ ] Add some description to dubbo-website project if you are requesting to add a feature.
  • [ ] GitHub Actions works fine on your own branch.
  • [ ] If this contribution is large, please follow the Software Donation Guide.

jessin20161124 avatar Feb 06 '22 10:02 jessin20161124

Any feedback regarding this pr? @AlbumenJ @chickenlj

jessin20161124 avatar Feb 18 '22 03:02 jessin20161124

Any feedback about this pr? @AlbumenJ @chickenlj

jessin20161124 avatar Mar 16 '22 06:03 jessin20161124