SpringアプリケーションでBeanとして動作するクラスには、同時に@Component
と@Named
の両方が必要ですか?同じBeanクラスの@Componentと@Namedの両方
両方を使用する場合、どういう意味がありますか?
私はネットを検索してみましたが、これらの注釈の標準的な文書を見て、少し混乱していました。
最後に、@Named
アノテーションでBeanの名前が指定されていない場合は、アプリケーションによってどの名前が使用されますか?
SpringアプリケーションでBeanとして動作するクラスには、同時に@Component
と@Named
の両方が必要ですか?同じBeanクラスの@Componentと@Namedの両方
両方を使用する場合、どういう意味がありますか?
私はネットを検索してみましたが、これらの注釈の標準的な文書を見て、少し混乱していました。
最後に、@Named
アノテーションでBeanの名前が指定されていない場合は、アプリケーションによってどの名前が使用されますか?
@Component
および@Named
は、基本的に同じことを行うアノテーションですが、異なるAPIに由来します。
@Component
はSpring APIに属します。 Beanとして自動的に検出されるクラスをマークし、オプションでそのBeanの名前を指定することができます(@Component("foo")
)。明示的な名前指定がなければ、検出されたBeanはそのクラスの名前から派生したデフォルト名を取得します。
@Named
は、javax.inject
APIに属します。 Beanとして自動的に検出されるクラスをマークし、名前を指定する必要があります。
春は、これらの両方のAPIをサポートしています。両方のアノテーションを同じクラスで使用することは、同じ機能を提供するので意味がありません。
を見る:
スプリング@Component
(スプリング)の代替として@Named
アノテーション(JSR-330)をサポートします。
一般に、@Named
は、それが何をしているのかわからないので、私はできる限り毎回@Component
を使用することをお勧めします。
どちらか一方を使用してください。 @Componentと@Namedの両方を使用しても意味がありません。 暗黙的に割り当てられていない場合は、@( "[someComponentID]")と@Named( "[someNamedID]")にコメントを付けてIDを括弧で渡してBeanに割り当てます。
合意しました。(a)名前の名前が正しくありません。しかし、多くのクラスは、異なるフレームワークのプロジェクト間で共有されるリソースです。 @Namedを使用してbean-ifyクラスを使用すると、各アプリケーションの依存関係としてjavax.injectionが必要になります。アノテーションのSpringに依存する別のフレームワークよりも優れています。 – Freestyle076