ライフサイクルとは何ですか
生存の破壊のプロセス全体に(通常のオブジェクト、スプリング容器、スプリングインゲンマメを含む)オブジェクトのいわゆるライフサイクル。
スコープとは何ですか
Springコンテナによって作成された豆の寿命は、生存の役割である豆、豆のスコープと呼ばれます。
共通するのは、4週間のスコープ:
singleton
スコープは、唯一、全ライフサイクルは、このインスタンスSpringコンテナで使用することができBean定義のためのBeanインスタンスを作成します。これは、デフォルトの豆の範囲であることに注意してください。私たちは、このカテゴリにある豆の前に示しています。prototype
新しいを作成するために、Javaオブジェクトと同様に使用される範囲は、容器から除去されるたびに、新しいBeanを作成します。request
スコープ、新しいBeanインスタンスを作成するすべてのWeb要求は、この範囲は、Webアプリケーションで使用することができます。session
スコープは、異なるセッションのための新しいBeanインスタンスを作成し、このスコープは、Webアプリケーションで使用することができます。
、理解するためのシンプルなsingleton
スコープは、コンテナから削除した回数に関係なく、検索されたオブジェクトであるとき、オブジェクトがコンテナが閉じられている知って、生きてきました; prototype
範囲は、容器から取り出さそれぞれが、新しいBean出ています。request
スコープとsession
スコープは、我々は、Webアプリケーションとセッションの要求の概念を理解する必要があります。
具象構文スコープの4種類
XMLの場合、使用scope="xxx"
豆の指定範囲を
<bean id="singer" class="org.maoge.Singer" scope="singleton"><bean>
注釈の場合には、豆の範囲を指定@Scope(「XXX」)を使用
@Component
@Scope("singleton")
public class Singer{
}
JavaConfigにおいて、また@Scope(「XXX」)を用いて豆の範囲を指定します
遅延初期化とその役割
時々、私たちは手順豆をたくさん持っている、いくつかのBeanは、よりゆっくりと開始(このようなデータベースにアクセスするために必要として、あなたは、ネットワーク負荷のリソースにアクセスするための負荷情報へのアクセスローカルファイルへの必要性を必要とします)。
豆のこれらのスロースタートは、プログラムが始まったばかり、または開始がしばらく使用されていない場合に可能です。私たちは、起動したプログラムの速度を上げるための豆遅れてスタートを持っています。
私はこのプロジェクトに遭遇した、いくつかの豆は豆ネッティー関連するネットワークモジュールであり、読み込み速度は非常に遅く、非常に無駄なシステム・パフォーマンスで、実際には(一部の顧客が使用するが使用されないことがありました、と一部の顧客それは)使用されません、これらのBeanにアップロードする場合は、間違いなく状況は大幅に改善、初期設定を遅らせる、システムの起動速度が遅くなります。
注デフォルトでは、春のBeanコンテナが開始段階で作成され、遅延初期化が必要なときに作成される実際のBeanです。
XMLコンフィギュレーション・ビーンを使用する場合、以下のように、遅延初期化構文は次のとおりです。
<bean id="singer" class="org.maoge.Singer" lazy-init="true"></bean>
注釈コンフィグレーションBeanを使用する場合は、次のように、遅延初期化の構文は次のとおりです。
@Component
@Lazy(true)
public class Singer{
}
JavaConfigでは、(真)@Lazy初期化豆を遅延させるために配置使用されます
Beanを指定してロード順序を持っています
時々、あなたは、このようなBeanとして、Beanをロードする順序を指定する必要があるデータベース・アクセス・ロジックを関連付けてデータベースインタフェースの初期化を完了した、あなたは別のBeanのBeanへのアクセスデータベースを呼び出す必要があり、その後、私たちは豆を超える最初のロードすることを確認する必要があり、その後、最初のロード2つの豆。
この時点で、それはとても悲しいことができるよに依存オン文法、bean2は依存オンbean1 bean1に依存bean2表すので、この場合には、容器がロードbean1あろう。
XML固有の構文は次のとおりです。
<bean id="bean2" class="org.maoge.test.Bean2" depends-on="bean1"></bean>
同じことは、使用することができ@DependsOn
、同じノートを示すために。
豆の作成と破棄のコールバック
豆JDBCカプセル化し、データアクセスロジックなら、私たちは、データベース接続、破壊豆の前に、データベース接続と閉じを初期化するために、URL、ユーザー、パスワード、およびそのプロパティのように注入しなければなりません。
この時点では、BeanがBeanの破壊前に、成功した後にコールバックメソッドをコールバックメソッドを作成し使用する必要があります。
次のようにXMLでは、特定の構文は次のとおりです。
<bean id="datasource" class="org.maoge.test.db" init-method="initDatasource" destroy-method="destroyDataSource"></bean>
アノテーションを使用して、次の構文:
public class DataSource{
@PostConstruct//bean创建成功后回调该方法
public void init throws Exception(){
}
@PreDestroy//bean销毁之前回调该方法
public void destroy throws Exception(){
}
}
概要
ライフサイクル管理通常のJavaオブジェクト、私たち自身が作成した、と回復するガベージコレクタを担当しています。
春のBeanオブジェクトフレームワーク、ライフサイクル全体を管理しているので、設定したい場合は、そのライフサイクルを管理し、あなたは春でSpringのルールを使用する必要があります。