春道(14) - 豆のライフサイクル

ライフサイクルとは何ですか

生存の破壊のプロセス全体に(通常のオブジェクト、スプリング容器、スプリングインゲンマメを含む)オブジェクトのいわゆるライフサイクル。

スコープとは何ですか

Springコンテナによって作成された豆の寿命は、生存の役割である豆、豆のスコープと呼ばれます。

共通するのは、4週間のスコープ:

  1. singletonスコープは、唯一、全ライフサイクルは、このインスタンスSpringコンテナで使用することができBean定義のためのBeanインスタンスを作成します。これは、デフォルトの豆の範囲であることに注意してください。私たちは、このカテゴリにある豆の前に示しています。
  2. prototype新しいを作成するために、Javaオブジェクトと同様に使用される範囲は、容器から除去されるたびに、新しいBeanを作成します。
  3. requestスコープ、新しいBeanインスタンスを作成するすべてのWeb要求は、この範囲は、Webアプリケーションで使用することができます。
  4. 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のルールを使用する必要があります。

发布了327 篇原创文章 · 获赞 238 · 访问量 52万+

おすすめ

転載: blog.csdn.net/woshisangsang/article/details/104081674