记住以下bean定义:
<bean id="bean1" class="com.mycompany.SomeClass">
<property name="prop1" value="value1">
<property name="prop2" value="value2">
</bean>
<bean id="bean2" class="com.mycompany.SomeClass">
<property name="prop1" value="value3">
<property name="prop2" value="value4">
</bean>
在基于注释的环境中,我可以使用@Qualifier
注释来区分这两者:
@Autowired
@Qualifier("bean1")
private SomeClass first;
@Autowired
@Qualifier("bean2")
private SomeClass second;
如果我不想在XML配置文件中声明bean,而是使用@Component
Annotation,我可以实现相同的功能吗?我找不到任何方法来使用@Autowired
注释注入同一类的两个不同的bean,用不同的参数初始化。
感谢。
答案 0 :(得分:1)
来自javadoc
public abstract String value
The value may indicate a suggestion for a logical component name, to be turned into a Spring bean in case of an autodetected component.
答案 1 :(得分:1)
只是@Component("myBeanName")
答案 2 :(得分:0)
如果你使用@Component,你如何区分SomeClass中的bean1和bean2?如果要避免使用XML,则必须使用Java配置类来定义具有不同属性的这两个bean。
答案 3 :(得分:0)
以下是使用Java @Configuration
:
@Configuration
public class Config {
@Bean
public SomeClass bean1() {
SomeClass s = new SomeClass();
s.setProp1(value1);
s.setProp2(value2);
return s;
}
@Bean
public SomeClass bean2() {
SomeClass s = new SomeClass();
s.setProp1(value3);
s.setProp2(value4);
return s;
}
}