Bean scope
Bean scope
Springで別途の設定をしない場合、default bean scopeはsingletonで構成されます。
singleton : spring default bean scope
prototype:アプリケーションリクエスト時に(getBean()メソッドが呼び出されるたびに)スプリングが新しいインスタンスを生成します。
request:HTTP リクエストごとにインスタンス化され、リクエストが終わると消滅します。
session:HTTP セッションごとにインスタンス化され、セッションが終了すると消滅します。
global session:ポートレート基盤のウェブアプリケーション用途で、全域セッションスコープが空のようなスプリングMVCを使用したポータルアプリケーション内のすべてのポートレートの間で共有できます。
thread:新しいスレッドから要請すると、新しいbeanインスタンスを作成します。 同じスレッドの要請には常に同じインスタンスが返されます。
custom : org.pringframework.beans.factory.config.Scopeを実装し、そしてカスタムスコープをスプリングの設定に登録することによって使用します。
※ request、session、global sessionのスコープは、一般のspringアプリケーションではなく、Spring MVC Applicationでのみ使用される用途です。
空きスコープを指定する方法は、XMLを利用した方法と、アノテーションを利用した方法があります。
XML
<bean id="memberBean" class="com.java.Member" scope="singleton"/>
Annotation
package com.java.pojo;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
@Service("memberBean")
@Scope("singletone")
public class Member {
}
Bean Life Cycle
Bean Life Cycle
空きライフサイクルは基本的に生成、依存設定、初期化、消滅の段階を経ます。 でも、どんなコンテナを使うかによって違います。
Bean Factoryは、基本的な依存性注入をサポートする最も簡単な形態のコンテナで、getBean()メソッドが呼び出されるまで空の生成を先送りします。 Application Contextは、BeanFactoryを継承した形態でBeanFactoryのすべての機能を持ち、追加的な機能を持つコンテナです。 Application contextはcontextが始まる前にすべての空きを作成してロードして、好きな時期にいつでもコピーして使えます。
Initialize & Destory メソッド
Bean Initializeメソッドは、Bean Objectが作成されてDIを終えた後に実行されるメソッドです。 一般的にObjectの初期化作業が必要な場合は生成者に処理しますが、DIによってBeanが注入された後に初期化後に初期化作業がある場合は、初期化メソッドを利用して初期化を進めます。
@Slf4j
@Component
public class SimpleBean {
@PostConstruct
public void postConstruct() {
log.info("postConstruct");
}
}
@Slf4j
@Component
public class SimpleBean {
@PreDestroy
public void preDestroy() {
log.info("preDestroy");
}
}