我知道如何创建和使用两个相同类型的Spring bean的问题已经回答过了使用2种豆同一类的,我读过有关一点点@Qualifier和@Resource,但我所看到的所有答案都在自动装配的环境中。在我的情况下,我试图使用这个bean的地方是在配置文件的另一部分,所以我不确定该解决方案的哪些部分适用。我也有一个情况是:我们正在做的以多种方式(XML配置文件,并与@Configuration注释的Java文件的配置,下面的代码是什么样子Spring的配置 - 创建并没有使用自动装配Autowired
import com.this.that.AuthProvider;
@Configuration
...
@Bean
public AuthProvider buildAuthProvider() {
return new AuthProvider(someotherbean);
}
@Bean
public MyConnectionManager buildMyConnectionManager(AuthProvider authProvider) {
return new MyConnectionManager(authProvider);
}
...
另一个Spring配置XML文件导入进入应用-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>
当我这样做有试图创建Java配置文件中MyConnectionManager错误。错误是与以下信息的构造ARG) org.springframework.beans。 factory.UnsatisfiedDependencyException ..(引发单个bean但发现2:MyAuthProvider,buildMyConnec ())
我也在这里看到另一个bean引用AuthProvider类,但不是只将它指定为bean构造函数的参数,而是使用无参数构造函数并使用'buildAuthProvider()创建一个新的AuthProvider )' 方法。我没有看到任何抱怨,或者在xml文件中创建的bean,但我不确定这个错误是否掩盖了其他人。
有人可以帮助我弄清楚如何有这两个独立的豆?它们是通过传递给它们构造函数的不同值创建的,所以在这种情况下我不能重复使用同一个bean。
这样做 - 谢谢! – ryoaska