support config ReferenceBean by the way of static @Bean method or @Bean method in @Component java config
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.
Any feedback regarding this pr? @AlbumenJ @chickenlj
Any feedback about this pr? @AlbumenJ @chickenlj