我知道如何创建和使用两个相同类型的 Spring bean 的问题之前已经回答过,我已经阅读了一些关于 @Qualifier 和 @Resource 的内容,但我看到的所有答案都在上下文中的自动装配。在我的情况下,我尝试使用 bean 的地方在配置文件的另一部分,所以我不确定解决方案的哪些部分适用。我还有一个案例,我们正在以多种方式进行配置(xml 配置文件,以及带有 @Configuration 批注的 java 文件。代码如下所示)
import com.this.that.AuthProvider;
@Configuration
...
@Bean
public AuthProvider buildAuthProvider() {
return new AuthProvider(someotherbean);
}
@Bean
public MyConnectionManager buildMyConnectionManager(AuthProvider authProvider) {
return new MyConnectionManager(authProvider);
}
...
Run Code Online (Sandbox Code Playgroud)
另一个 spring 配置 xml 文件导入到 application-config.xml
<bean id="MyAuthProvider" class="com.this.that.AuthProvider">
<constructor-arg type="java.lang.String" ref="somedifferentbean" />
</bean>
<bean id="MyClient" class="com.that.this.MyClient">
<constructor-arg type="com.this.that.AuthProvider"
ref="MyAuthProvider" />
</bean>
Run Code Online (Sandbox Code Playgroud)
当我这样做时,尝试在 Java 配置文件中创建 MyConnectionManager 时出错。错误在构造函数 arg 上,具有以下信息 ) org.springframework.beans.factory.UnsatisfiedDependencyException ..(预期单个 bean 但发现 2: MyAuthProvider, buildMyConnectionManager())
我还在这里看到了另一个 bean,它引用了 AuthProvider 类,但它不只是将它指定为 …