apache / apache/dubbo

ApplicationConfig 提前加载导致的 org.apache.dubbo.config.ApplicationConfig#0: defined in null

Open
#10,277 2 comments 0 reactions 0 assignees View on GitHub
type/discussion
Dominant language
Java
Stars
41.6k
Forks
26.4k
Avg merge
15h 13m
Merged PRs (30d)
4

Description

求问题验证解决思路

现象所在 version:2.7.15

在2.7.3中使用如下方法注入bean是可以成功的
```java
@Configuration
@RequiredArgsConstructor
@EnableConfigurationProperties({A.class, B.class})
public class DubboBaseAutoConfig implements InitializingBean{
@Bean
@Primary
@ConditionalOnMissingBean(ApplicationConfig.class)
public ApplicationConfig applicationConfig()
```
然而在2.7.15中会出现这样的错误
```

***************************
APPLICATION FAILED TO START
***************************

Description:

Parameter 3 of constructor in com.demo.web.impl.ServiceImpl required a single bean, but 2 were found:
- applicationConfig: defined by method 'applicationConfig' in class path resource [com/demo/starter/dubbo/support/DubboBaseAutoConfig.class]
- org.apache.dubbo.config.ApplicationConfig#0: defined in null

```
怀疑是提前实例化导致在
```
org.springframework.context.support.AbstractApplicationContext#finishBeanFactoryInitialization
```
实例化的时候,存在两个``` org.apache.dubbo.config.ApplicationConfig#0 ```导致的问题

想找个方法验证猜想并解决问题,却没有什么头绪。

Contributor guide

Open the contributing guide

Research direction

Compare the reported behavior between Dubbo 2.7.3 and 2.7.15, starting with DubboBaseAutoConfig#applicationConfig and Spring's AbstractApplicationContext#finishBeanFactoryInitialization. Reproduce the startup failure and inspect why both ApplicationConfig beans are present. Done means the duplicate-bean cause is verified and a concrete resolution or regression test is identified.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, spring
Domain
backend, distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.