SpringコンテナによるBeanコンポーネントの管理
3259 ワード
一.Beanオブジェクトの作成タイミング:デフォルトはコンテナに従って作成され、lazy-initによってオブジェクトのインスタンス化タイミング(a)デフォルトlazy-init=default||false:springコンテナがインスタンス化されたとき、コンテナ内のオブジェクトをすべてインスタンス化します.
(b)lazy-init=「true」springコンテナからオブジェクトを取得するときにオブジェクトインスタンスを開始
(c)グローバルdefault-lazy-init=「true」プロファイル全体のオブジェクトをインスタンス化する遅延注意:タイマーを使用する場合、lazy-init=「true」は使用できません.
二.Beanオブジェクトの作成モード
1.singleton:springコンテナオブジェクトのデフォルトは、単一のモードが毎回1つのインスタンスになるだけです.
struts1: 2.prototype:複数の例で、springコンテナは毎回オブジェクトに新しいインスタンスを生成します.
struts2:
scope:web開発でrequest,sessionを使用する.
レビュー:
≪セッション|Sessions|ldap≫:サーバー側とのマルチリクエストおよびレスポンス・プロシージャpageContext:現在のページsession:1回のセッションrequest:1回のリクエストアプリケーション:アプリケーション全体
テストクラス:
プロファイル内の
実行結果:
私は単例を生んだ.
プロファイル内の
実行結果:
私は生まれました.私は何例も生まれました.
三.Beanオブジェクトの初期化と破棄
(a)springプロファイルで破棄方法と初期化方法を定義(b)Beanオブジェクトで破棄方法と初期化方法public void init(){}public void destroy(){}(c)Springコンテナ自動呼び出し破棄方法と初期化方法注意:破棄方法AbstractApplicationContextを呼び出してコンテナを破棄する方法close();コンテナBeanオブジェクトを破棄する場合、destroy(){}scope="prototype"を破棄することは多くの例でサポートされていません.
テストクラス:
プロファイル内の実行結果:
私は生まれてinitの方法を実行します私は豆の実行destroyです
プロファイル内の
運行結果:私は生まれてinitの方法を実行して私は豆です
(b)lazy-init=「true」springコンテナからオブジェクトを取得するときにオブジェクトインスタンスを開始
(c)グローバルdefault-lazy-init=「true」プロファイル全体のオブジェクトをインスタンス化する遅延
二.Beanオブジェクトの作成モード
1.singleton:springコンテナオブジェクトのデフォルトは、単一のモードが毎回1つのインスタンスになるだけです.
scope:web開発でrequest,sessionを使用する.
レビュー:
≪セッション|Sessions|ldap≫:サーバー側とのマルチリクエストおよびレスポンス・プロシージャpageContext:現在のページsession:1回のセッションrequest:1回のリクエストアプリケーション:アプリケーション全体
テストクラス:
public class Bean {
public void show(){
System.out.println(" ");
}
public Bean() {
System.out.println(" ");
}
public static void main(String[] args) {
ApplicationContext ac = new
FileSystemXmlApplicationContext("classpath:applicationContext.xml");
Bean bean1 = (Bean)ac.getBean("bean");
Bean bean2 = (Bean)ac.getBean("bean");
if(bean1 == bean2){
System.out.println(" ");
}else{
System.out.println(" ");
}
}
}
プロファイル内の
実行結果:
私は単例を生んだ.
プロファイル内の
実行結果:
私は生まれました.私は何例も生まれました.
三.Beanオブジェクトの初期化と破棄
(a)springプロファイルで破棄方法と初期化方法を定義
テストクラス:
public class Bean {
public void show(){
System.out.println(" ");
}
public Bean() {
System.out.println(" ");
}
//
public void init(){
System.out.println(" init ");
}
public void destroy(){
System.out.println(" destroy");
}
public static void main(String[] args) {
AbstractApplicationContext ac = new
FileSystemXmlApplicationContext("classpath:applicationContext.xml");
Bean bean = (Bean)ac.getBean("bean");
bean.show();
ac.close();
}
}
プロファイル内の
私は生まれてinitの方法を実行します私は豆の実行destroyです
プロファイル内の
運行結果:私は生まれてinitの方法を実行して私は豆です