3

構成とのspring bean両方を使用して定義されている場合。次に、優先度の高い初期化中、または.xmlannotationxmlannotations

私の豆のように...

package com.abc;    

@Component
Class Demo{
    ...
}

そして、私のxml構成は...

...
<context:annotation-config />
<context:component-scan base-package="com.abc" />

<bean id="demo" class="com.abc.Demo"/>
...

これで、demoBean は と の両方xmlを使用して定義されannotationsます。初期化中、誰がbean:annotationまたはxml.

4

5 に答える 5

4

XML インジェクションの前にアノテーション インジェクションが実行されます。したがって、後者の構成は、両方の方法で配線されたプロパティの前者をオーバーライドします。

于 2017-08-10T07:45:42.960 に答える
1

この投稿によると、同じクラスに対して「コンポーネントスキャン」と XML ベースのワイヤリングを組み合わせることはできません。Bean を 2 回インスタンス化することになると言っているようです。

于 2013-08-14T05:37:05.293 に答える
1

アノテーション注入は XML インジェクションの前に実行されるため、後者の構成は、両方のアプローチを介して配線されたプロパティの前者をオーバーライドします。

つまり、XML 構成はアノテーション構成よりも優先されます。

また、これは、@Repository によって定義された未チェックの例外サポートや、@Transactional を使用する場合のトランザクション サポートなど、すべての注釈機能が失われたという意味ではありません。

すべての注釈はまだそこにあり、適切にサポートされています。唯一の違いは、Bean 定義が 2 つではなく 1 つになることです。

于 2017-11-08T03:53:19.920 に答える
0

xml と注釈の両方で Bean を宣言すると、コンテナは Bean のレシピを 2 回読み取ることになります。xml の結果の Bean 名がアノテーションの名前と異なる場合、異なる名前の 2 つの Bean が作成されます。さらに悪いことに、レシピが異なると動作が異なる可能性があります。アノテーションのみを使用して @Scope("session") を宣言すると、1 つの Bean のみがセッション スコープになり、別のシングルトンになります

于 2015-07-06T09:45:48.620 に答える