Spring アプリケーションで Bean として機能するクラスは、同時に両方@Component
を必要としますか?@Named
両方がそのように使用されている場合、どのような意味がありますか?
私はネットを検索してみましたが、これらの注釈の標準ドキュメントを見て、少し混乱していることに気付きました。
最後に、@Named
アノテーションで Bean の名前が指定されていない場合、アプリケーションはどの名前を使用しますか?
Spring アプリケーションで Bean として機能するクラスは、同時に両方@Component
を必要としますか?@Named
両方がそのように使用されている場合、どのような意味がありますか?
私はネットを検索してみましたが、これらの注釈の標準ドキュメントを見て、少し混乱していることに気付きました。
最後に、@Named
アノテーションで Bean の名前が指定されていない場合、アプリケーションはどの名前を使用しますか?
@Component
と@Named
は基本的に同じことを行うアノテーションですが、異なる API から来ています。
@Component
Spring API に属します。クラスが Bean として自動検出されるようにマークし、オプションでその Bean の名前を指定できるようにします ( @Component("foo")
)。名前を明示的に指定しないと、検出された Bean はそのクラスの名前から派生したデフォルト名を取得します。
@Named
javax.inject
APIに属します。クラスが Bean として自動検出されるようにマークし、名前を指定する必要があります。
Spring は、これらの両方の API をサポートしています。同じ機能を提供するため、両方のアノテーションを同じクラスで使用しても意味がありません。
以下も参照してください。
Spring は、(Spring)@Named
の代替としてアノテーション (JSR-330) をサポートし@Component
ます。
一般に、@Named
何をするかを説明していないため名前が不十分なので、できる@Component
限り使用することをお勧めします。