7

context:annotation-configXML 構成に入れることができ、アノテーションを必要とせずに Bean クラスを自動的に注入するのは正しいですか?

したがって、これらの注釈タイプを使用する代わりに:

public class Mailman
{
    private String name;

    @Autowired
    private Parcel Parcel;

    public Mailman(String name)
    {
        this.name = name;
    }

    @Autowired
    public void setParcel(Parcel Parcel)
    {
        this.Parcel = Parcel;
    }

    @Autowired
    public void directionsToParcel(Parcel Parcel)
    {
        this.Parcel = Parcel;
    }

}

これを書くだけです:

<beans ... >
<bean id="mailMan" class="MailMan">
 <constructor-arg value="John Doe"/>
</bean>
<bean id="parcel" class="Parcel" />
<context:annotation-config />
</beans>

そして、私の MailMan クラスは、注釈を必要とせずにずっと単純に見えるでしょう:

public class Mailman
{
    private String name;

    private Parcel Parcel;

    public Mailman(String name)
    {
        this.name = name;
    }    
}
4

3 に答える 3

7

デフォルトでは、Spring コンテキストは@Autowiredアノテーションに注意を払いません。それらを処理するには、コンテキストにAutowiredAnnotationBeanPostProcessorBean が登録されている必要があります。

<context:annotation-config/>これらのうちの1つを(他のいくつかと一緒に)登録するので、それが必要になります(AutowiredAnnotationBeanPostProcessor自分で登録しない限り、これは完全に有効です)。

コードに含めるのが気に入らない場合は@Autowired、 を使用して XML にプロパティを明示的に挿入できます<property>

コンテキストが非常に単純な場合は、ここで説明されているように、暗黙的な自動配線を使用できます。基本的に、これはSpringにプロパティ名またはタイプによって自動的に自動配線するように指示します。これにはほとんど構成が必要ありませんが、すぐに制御不能になります。つまり、自動であるため、制御が難しく、柔軟性がほとんどありません。

@Autowired一般的に、本当に最良の選択肢です。

于 2010-06-06T19:54:44.647 に答える
1

<context:annotation-config />PersistenceAnnotationBeanPostProcessorAutowiredAnnotationBeanPostProcessorCommonAnnotationBeanPostProcessorおよび など、 Spring が提供するすべての標準 Bean ポスト プロセッサを自動登録するだけなRequiredAnnotationBeanPostProcessorので、Spring コンテキスト ファイルに個別に登録する必要はありません。@Autowired前と同じように、属性/セッターに注釈を付ける必要があります。

于 2010-06-06T17:36:29.990 に答える
0

いいえ。

@Autowiredクラスには注釈が必要です <context:annotation-config/>

注釈を使用する場合、xml 構成部分は必要ありません。

また、ドキュメントから、<context:annotation-config/>Bean が定義されているのと同じアプリケーション コンテキスト内の Bean の注釈のみを検索することに注意してください。サービス。

注釈を使用する必要がない場合は、xml 構成を指定する必要があります。

于 2010-06-06T17:42:06.810 に答える