Beanの使用
1Beanタグの基本構成
構成オブジェクトはSpringによって作成されます。
デフォルトでは、クラス内のパラメーターなしコンストラクターを呼び出します。パラメーターなしコンストラクターがない場合、正常に作成できません。
基本属性:
id:Springコンテナ内のBeanインスタンスの一意の識別子
クラス:Beanの完全修飾名
3.2Beanタグ範囲の構成
スコープ:オブジェクトのスコープを参照します。値は次のとおりです。
範囲 | 説明 |
---|---|
シングルトン | デフォルト値、シングルトン |
プロトタイプ | 多例的 |
リクエスト | WEBプロジェクトでは、SpringはBeanオブジェクトを作成し、そのオブジェクトをリクエストフィールドに格納します |
セッション | WEBプロジェクトでは、SpringはBeanオブジェクトを作成し、そのオブジェクトをセッションフィールドに格納します。 |
グローバルセッション | WEBプロジェクトでは、ポートレット環境に適用されます。ポートレット環境がない場合、globalSessionはセッションと同等です。 |
1)スコープの値がシングルトンの場合
Beanインスタンス化番号:1
Beanインスタンス化のタイミング:Springコアファイルがロードされたら、構成済みのBeanインスタンスをインスタンス化します
Beanのライフサイクル:
オブジェクトの作成:アプリケーションがロードされ、コンテナが作成されると、オブジェクトが作成されます
オブジェクトの実行:コンテナがそこにある限り、オブジェクトは常に生きています
オブジェクトの破棄:アプリケーションがアンロードされ、コンテナーが破棄されると、オブジェクトが破棄されます
2)スコープの値がプロトタイプの場合
Beanのインスタンス化の数:複数
Beanのインスタンス化のタイミング:getBean()メソッドが呼び出されたときにBeanをインスタンス化します
オブジェクトの作成:オブジェクトを使用する場合は、新しいオブジェクトインスタンスを作成します
オブジェクト操作:オブジェクトが使用されている限り、オブジェクトは常に存続します
オブジェクトの破棄:オブジェクトが長期間使用されない場合、Javaガベージコレクターによってリサイクルされます
3.3Beanのライフサイクル構成
init-method:クラスの初期化メソッドの名前を指定します
destroy-method:クラスのdestroyメソッドの名前を指定します
3.4Beanインスタンス化の3つの方法
1)引数なしの構築方法を使用してインスタンス化する
デフォルトの引数なしコンストラクターに従ってクラスオブジェクトを作成します。Beanに引数なしデフォルトのコンストラクターがない場合、作成は失敗します。
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
2)ファクトリ静的メソッドのインスタンス化
ファクトリの静的メソッドはBeanインスタンスを返します
public class StaticFactoryBean {
public static UserDao createUserDao(){
return new UserDaoImpl();
}
}
<bean id="userDao" class="com.itheima.factory.StaticFactoryBean"
factory-method="createUserDao" />
3)ファクトリインスタンスメソッドのインスタンス化
ファクトリの非静的メソッドはBeanインスタンスを返します
public class DynamicFactoryBean {
public UserDao createUserDao(){
return new UserDaoImpl();
}
}
<bean id="factoryBean" class="com.itheima.factory.DynamicFactoryBean"/>
<bean id="userDao" factory-bean="factoryBean" factory-method="createUserDao"/>