Spring学習ノートの――Spring Bean


Spring Bean
記事の目次
  • *Spring Bean*
  • Benの構成
  • Benの実装
  • 構造方法の実装
  • 静的工場の実施例
  • 例の化学工場の実証
  • Benのスコープ
  • ビーンのライフサイクル
  • ビーンバックプロセッサ
  • Ben定義継承
  • Spring注入内部ビーズ
  • Spring Bens自動組立
  • 内容は「Spring 5高級プログラミング」を参照してください.
    Spring容器はSpring容器の中のBeanを生産し管理する大型工場と見なしてもいいです.この工場を使ってビーンを生産し管理するには、開発者がビーン配置をSpringの配置ファイルに書く必要があります.
    ビーンの配置
    属性と配置の詳細はSpring.ioを参照してください.
    Beanの実用化
    SpringフレームでSpring容器の中のBeanを使いたいなら、実用化が必要です.Beanは実用化されてからSpring容器に呼び出されて注入することができます.
    構造方法の実証
    public class BeanClass{
        public String message;
        public BeanClass(){
            message="       ";
        }
    }
    
    XML:
    <bean id = "constructorInstance" class = "instance.BeanClass"/>
    
    静的工場の実用化
    クラスに静的工場法を定義してビーンを作成し、XML構成に静的工場法の名称を明記する必要があります.
    まず、Springのbeanを紹介します.Springはbeanを維持する必要があります.すべての依存対象は同じ例を使用します.Springは単一例の実用化モデルを実現することにより、Singleton設計モードを使用する必要がない.
    XML:
    <bean id = "clinetService" class = "examples.ClientService" factory-method = "createInstance"/>
    
    public class ClientService {
        private static ClientService clientService = new ClientService();
        private ClientService() {}
    
        public static ClientService createInstance() {
            return clientService;
        }
    }
    
    実例となる化学工場の実証化
    まず工場ビーンを定義して、他の工場類によって定義されるビーンを定義します.
    
    
        
    
    
    
    
        
    
    public class DefaultServiceLocator {
    
        private static ClientService clientService = new ClientServiceImpl();
    
        public ClientService createClientServiceInstance() {
            return clientService;
        }
    }
    
    
    一つの工場類にも複数の工場方法が含まれています.
    
        
    
    
    
    
    
    
    ビーンのスコープ
    Springでbeanを定義する場合は、beanの役割領域のオプションを宣言しなければなりません.例えば、Springを強制するために、必要なたびに新しいbeanのインスタンスを生成します.beanの役割領域の属性はprototypeであると宣言すべきです.同じように、Springが必要なたびに同じbeanインスタンスに戻りたいなら、beanの役割領域の属性はsingletonであると宣言すべきです.
    singletonスコープ:Singletonは一例タイプです.容器を作る時に自動的にbeanのオブジェクトを作成しました.あなたが使うかどうかに関わらず、彼は存在します.毎回得られたオブジェクトは同じ対象です.なお、Singletonの作用領域はSpringにおけるデフォルトの作用領域である.
    
    
        
    
    
    prototypeスコープ:beanのスコープがProttypeである場合、1つのbeanが対応する複数のオブジェクトのインスタンスを定義することを示す.Prototypeのスコープのbeanは、ビーンに対する要求(他のbeanに注入するか、またはコンテナのgetBen()方法をプログラムで呼び出すたびに、新しいbeanインスタンスを作成することをもたらす.プロトタイプはプロトタイプで、私たちが容器を作る時には具体化されていません.私たちがbeanを取得した時にオブジェクトを作成します.しかも私たちが獲得したオブジェクトは毎回同じ対象ではありません.
    
    
       
    
    
    ビーンのライフサイクル
    Spring beanのライフサイクルを理解するのは簡単です.
    beanが実装されると、いくつかの初期化を実行して、利用可能な状態に変換する必要があります.同様に、ビーンが必要でなく、容器から取り外される場合は、いくつかの清掃作業が必要になるかもしれない.
    インストールと取り外しを定義するために、私たちはinit-methodと/またはdestroy-methodのパラメータを持つことを宣言します.init-method属性は、beanを実装する際に、直ちにこの方法を呼び出す方法を指定します.同様に、destroy-methodは、ビーンを容器から除去した後だけ、この方法を呼び出す方法を指定します.
    ビーンのライフサイクルは、ビーンの定義――ビーンの初期化――ビーンの使用――ビーンの廃棄と表現できる.
    
    		//“”        
        
    
    
    ビーンバックプロセッサ
    ビーンバックプロセッサは、初期化方法を呼び出した前後にビーンを追加的に処理することを可能にする.
    BenPostProcessorインタフェース定義のコールバック方法は、この方法で自分の実用化ロジック、解析ロジックなどを提供することができます.また、Spring容器に1つ以上のBenPostProcessorを挿入することによって実装された実装例を達成し、1つのbeanを構成し初期化した後に、いくつかのカスタム論理フィードバック方法を実現することもできます.
    ここのバックプロセッサは全てのbeanを処理します.
    
        
            
        
    
        
    
        
    
        
            
        
    
    BeforeInitialization:test
    AfterInitialization:test
    
    BeforeInitialization:testdiservice
    AfterInitialization:testdiservice
    
    BeforeInitialization:constructorinstance
    AfterInitialization:constructorinstance
    
    BeforeInitialization:helloworld
    Bean is going through init
    AfterInitialization:helloworld
    
    Hello,world
    Bean will destroy now.
    
    
    ビーン定義継承
    Spring Bean定義の継承はJava類の継承とは無関係ですが、継承の概念は同じです.親beanの定義をテンプレートとして定義できます.他の子beanは親beanから必要な構成を継承できます.
     
          
          
       
    
       
          
          
       
    
    World Message1 : Hello World!
    World Message2 : Hello Second World!
    India Message1 : Hello India!
    India Message2 : Hello Second World!
    India Message3 : Namaste India!
    
    ベルン継承は、実用化時に対応するタイプの親オブジェクトを伝達し、デフォルトでは一例化されていますので、伝達は同じオブジェクトです.
    Spring注入内部ビーム
    ご存知のように、Java内部クラスは他のクラスの範囲で定義されています.同じように、inner beansは他のbeanの範囲で定義されています.したがって、または要素内の要素を内部beanと呼ぶ.
    内部クラスのようです.初期化方式も同様です.
    Spring Bens自動組立
  • @AutoWiredを使用して自動組立する場合、XMLに以下を追加しなければなりません.@Autowiredは属性とsetter方法に注釈を付けることができます.Autowired(required=true)は@Requiredの代わりになります.
  •  
    
  • は、@Qualfier(「student 1」)を使用して、どのbean注入例を区別する.