39

Spring アプリケーションで Bean として機能するクラスは、同時に両方@Componentを必要としますか?@Named

両方がそのように使用されている場合、どのような意味がありますか?

私はネットを検索してみましたが、これらの注釈の標準ドキュメントを見て、少し混乱していることに気付きました。

最後に、@Namedアノテーションで Bean の名前が指定されていない場合、アプリケーションはどの名前を使用しますか?

4

3 に答える 3

70

@Component@Namedは基本的に同じことを行うアノテーションですが、異なる API から来ています。

@ComponentSpring API に属します。クラスが Bean として自動検出されるようにマークし、オプションでその Bean の名前を指定できるようにします ( @Component("foo"))。名前を明示的に指定しないと、検出された Bean はそのクラスの名前から派生したデフォルト名を取得します。

@Namedjavax.injectAPIに属します。クラスが Bean として自動検出されるようにマークし、名前を指定する必要があります。

Spring は、これらの両方の API をサポートしています。同じ機能を提供するため、両方のアノテーションを同じクラスで使用しても意味がありません。

以下も参照してください。

于 2012-04-17T10:52:22.423 に答える
12

Spring は、(Spring)@Namedの代替としてアノテーション (JSR-330) をサポートし@Componentます。

一般に、@Named何をするかを説明していないため名前が不十分なので、できる@Component限り使用することをお勧めします。

于 2016-11-28T14:24:54.940 に答える