@Beanと@Component違い
-
@Component注釈クラスは、コンポーネントクラスとして表示され、クラスのために作成されるのSpring Beanをお知らせいたします。
-
@Bean注釈は、春にはこの方法を使用すると、SpringアプリケーションコンテキストのBeanに登録したいというオブジェクトを返すように指示します。この方法は、一般に、最終生成ロジックBeanインスタンスの本体を含みます。
目的は同じであり、スプリングビーンコンテナに登録されています。
@Component(コントローラ@、@サービス、リポジトリ@)は、典型的には、クラスパスを走査することによって自動的に検出され、自動的にSpringコンテナに取り付けられています。
注釈生成ロジック@Bean一般的に我々は、注釈でマークされた過程でBeanを定義します。
栗の場合:
@コントローラ // ここではコンポーネント、コントローラ、サービス、リポジトリは同じ役割を果たすことができます。 @RequestMapping( " /ウェブ/ controller1") パブリック クラスWebController { ..... }
より柔軟な@Beanの使用
私たちは春のコンテナに収まるように、サードパーティのライブラリのクラスのニーズを参照するときだけ@Beanによって達成することができます
例えば:
パブリック クラスWireThirdLibClass { @豆 公共ThirdLibClass getThirdLibClass(){ 返す 新しい)(ThirdLibClassを。 } }
別の例としてのみ@Beanと:
@Bean 公共OneServiceのgetService(ステータス){ 場合(ステータス){ とき 1 : 返す 新しい)(serviceImpl1を。 とき 2 : 返す 新しい)(serviceImpl2を。 とき 3 : 返す 新しい)(serviceImpl3を。 } }
上記の例では、コンポーネント、ならびに特定の実装ノート(コントローラ、サービスリポジトリ)によって達成されません。
要約:@Componentと@Beanがビーン成分比ビーンを登録するために使用され、Springコンテナに組み立てが、よりカスタマイズされています。コンポーネントは、いくつかは、カスタムの負荷クラスを実現するために失敗し達成することができます。