3

牢记以下 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,而是使用@ComponentAnnotation,我可以实现同样的目的吗?我找不到任何方法来注入同一类的两个不同的bean,使用不同的参数初始化,使用@Autowired注释。

谢谢。

4

4 回答 4

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.
于 2013-01-30T08:47:58.620 回答
1

只是@Component("myBeanName")

于 2013-01-30T16:17:14.840 回答
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;
    }

}
于 2013-01-30T18:08:51.893 回答
0

如果您使用@Component,您将如何区分 SomeClass 中的 bean1 和 bean2?如果要避免使用 XML,则必须使用 Java 配置类,该类定义了具有不同属性的这两个 bean。

请参阅Spring Java 配置

于 2013-01-30T09:17:22.317 回答