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注釈を使用して 2 つを区別できます。

@Autowired
@Qualifier("bean1")
private SomeClass first;

@Autowired
@Qualifier("bean2")
private SomeClass second;

@ComponentXML 構成ファイルで Bean を宣言するのではなく、注釈を使用する場合、同じことを達成できますか? @Autowired注釈を使用して、異なるパラメーターで初期化された同じクラスの 2 つの異なる Bean を注入する方法が見つかりませんでした。

ありがとう。

4

4 に答える 4

1

それはただ@Component("myBeanName")

于 2013-01-30T16:17:14.840 に答える
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 に答える
0

@Component を使用する場合、SomeClass 内で bean1 と bean2 をどのように区別しますか? XML を回避したい場合は、これら 2 つの Bean を異なるプロパティで定義する Java 構成クラスを使用する必要があります。

Spring Java Configを参照してください。

于 2013-01-30T09:17:22.317 に答える
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 に答える