スプリングコンテナでは、<Ref>を介して依存関係を確立することに加えて、2つの豆の間にいくつかの特別な関係があります。
1相続
オブジェクト指向のプログラミング原則では、複数のクラスに同じメソッドとプロパティがある場合、親クラスを導入して重複コードを排除できます。スプリングコンテナでは、複数の豆が同じ構成情報を持っている場合、親豆が親子の構成情報を自動的に継承するように、親の豆を定義できます。
<! - parent bean - > <bean id = "abstractbook" p:name = "veil" abstract = "true"> </bean> <! - child bean-> <bean id = "book1" p:press = "chongqing Publishing house" parent = "abstractbook"/> <bean id = "book2" p:press = "shamgai翻訳=" "/>
一般的に言えば、親の豆の機能は、子供豆の構成を簡素化することであるため、抽象クラスに設定されます(要約= "true")。ここで親の豆が抽象クラスに設定されていない場合、スプリングコンテナは親の豆をインスタンス化します。
2事前依存
一般的に言えば、<Ref>は豆間の依存関係を確立するために使用されます。スプリングコンテナは、これらの関係を管理する責任があります。豆をインスタンス化すると、容器はすべての豆が豆に依存していることを保証します。
しかし、場合によっては、豆間の依存関係はそれほど明白ではありません。
このシナリオでは、システムがいくつかのシステムパラメーター(パスワードの妥当性期間、監視などを有効にするなど)を設定し、これらのスタートアップパラメーターを使用してシステムの動作ロジックを制御します。これらのパラメーターを表すために設定クラスを使用します。
パブリッククラス設定{ / ** *パスワードの有効期限(ユニット:日) * / public static int pass_timeout = 30; / ***監視を有効にするかどうか*/ public static boolean is_monitor = false;}ここで、これらのパラメーターのデフォルト値を設定します。また、システムには管理者のバックエンドがあり、管理者はこれらのシステムパラメーターを調整してデータベースに保存できます。したがって、アプリケーションが起動するとき、これらのシステムパラメーターはデータベースからロードする必要があります。
パブリッククラスシステム{public System(){init(); } /***初期化* /private void init(){//これらの値がデータベース設定から来ていると仮定します。pass_timeout= 20; settings.is_monitor = true; }}システムにはパスワード有効期限マネージャーがあります。これにより、システムパラメーターの[パスワードの有効期限が切れる日数]に基づいてパスワードが期限切れになるかどうかを検出するタイミングタスクが作成されます。
パブリッククラスPassManager {int Timeout; public passmanager(){timeout = settings.pass_timeout; timertask(); } / ***パスワードの有効期限が切れるかどうかを検出するタイミングされたタスク}}PassManagerは設定に直接依存していませんが、論理的には、PassManagerは、システムが開始前に初期化されたシステムパラメーターをロードすることを期待しています。
春には、この豆の依存前豆がインスタンス化前にロードされていることを確認するために、依存関係のプロパティを介して豆の前依存性豆を明示的に指定できます。
<bean id = "system"/> <bean id = "manager" diseps-on = "system"/>
接頭辞が複数の豆に依存する場合、豆の名前はコンマ、スペース、またはセミコロンで構成できます。
3引用ID
Beanが別のBeanのID値(BeanName)を参照する必要があるとします。これは通常、ランタイム中にBeanのGetBean(BeanName)メソッドを介して別のBeanを取得するために使用されます。
次のように構成できます。
<bean id = "Author"/> <bean id = "book" p:authorid = "著者"/>
本にauthid属性を追加しました:
/** *著者Bean ID */private String Authorid;
この文字通りの形で設定できますが、2つの間に実際の参照関係はありません。したがって、構成エラーは、特定の呼び出しが呼び出された場合にのみ見つかります。
Springは<idref>要素タグを提供します。これは、<idref>を介して別のBeanの名前を参照しています。このようにして、コンテナが起動すると、参照関係の正確性がチェックされ、誤った構成情報が事前に見つかります。
<bean id = "author10"/> <bean id = "book10"> <プロパティ名= "authorid"> <idref bean = "author10"/> </property> </bean>
構成エラーが発生した場合、スプリングコンテナが起動するとBeanDefinitionStoreExceptionがスローされ、IDEのXMLパーサーも事前に参照エラーを見つけます。
要約します
上記は、編集者が紹介したスプリングビーンズ間の特別な関係です。それがあなたに役立つことを願っています。ご不明な点がございましたら、メッセージを残してください。編集者は時間内に返信します!