また、実際の開発にコンポーネントを登録するためのSpring Beanが提供するファクトリを使用することができます
まず、豆植物の実装を作成
/ ** * Tは、工場ビーンによって得られた、一般的な豆のオブジェクトである * * / パブリック クラス ColorFactory 実装 FactoryBeanの<カラー> { / ** *メソッドのgetObject工場豆豆により得られた容器ロードする * / パブリックカラーのgetObjectを( )スロー{例外 返す 新しい新しい、カラー() } / ** *戻り豆容器IOCのタイプ * / パブリック <?>クラスgetObjectType(){ // TODO自動生成されたメソッドスタブを 返す。カラークラス; } / ** シングルトンかどうか、容器内*設定Beanオブジェクト *戻り値は真である:シングルトン * flase戻り値:複数の例 * / パブリック ブールisSingleton(){ 戻り falseに; } }
ColorFactoryは、マスター構成に@Bean注釈カテゴリを通って容器に登録しました
@Configuration パブリック クラスMainConfig2 { // デフォルトIDと呼ばれる方法 @Bean 公共ColorFactory getColorFactory(){ 戻り 新しい新しいColorFactoryを(); } }
私たちは、テストクラスに道のコンテナコンポーネントIDを取得することによって、Beanオブジェクトのコンテナを取得します
パブリック クラスIOCTest { @Test 公共 ボイドTEST4(){ ApplicationContextのApplicationContextの = 新しい AnnotationConfigApplicationContext(MainConfig2。クラス)。 オブジェクトcolorFactory = applicationContext.getBean( "getColorFactory" )。 System.out.println(colorFactory)。 } }
結果:
com.wxj.bean.Color@57d5872c
我々は、リザーバ内に存在するが好きにColorFactoryないが見つかったが、観察によるカラーオブジェクトは、コンテナの方法は、工場豆のgetObject(によって作成された)容器を登録するオブジェクトを返すことを示しています。
だから、あなたはそれを得るべきか、ColorFactoryオブジェクトを取得する必要がありますか?豆のID名の前に取得するには、「&」記号を追加する必要があります。
パブリック クラスIOCTest { @Test 公共 ボイドTEST4(){ ApplicationContextのApplicationContextの = 新しい AnnotationConfigApplicationContext(MainConfig2。クラス)。 オブジェクトcolorFactory = applicationContext.getBean( "&getColorFactory")。// "&"可获得工厂豆对象 のSystem.out.println(colorFactory)。 } }
結果:
com.wxj.ColorFactory@57d5872c
拡張:
単一のインスタンスを使用する場合、getObjectメソッドは一度だけ呼び出される、マルチインスタンスの場合、すべての取得BeanはのgetObject()メソッドを呼び出します。