Springメモ2----Benの定義と範囲


1.depends-on属性
   依存関係のbeanを設定します.複数の依存関係がある場合は、カンマ、セミコロン、スペースで区切られます.
<bean id="testBean1" class=.... depends-on="testBean2,testBean3"/>
  特殊な関係がある2つ以上のBenの実装順の問題を解決することができます.以上のコードはdepends-on属性を入れないと、testBen2、testBenn 3はtestBen1の前に実装されるので、testBenn 1の前に定義が必要です.
<bean id="testBean2" class.../>

<bean id="testBean3" class.../>

<bean id="testBean1" class...>
<property name="testBean2" ref="testBean2"/>
<property name="testBean3" ref="testBean3"/>
</bean>
 これはコードのメンテナンスに不便をもたらすので、デペンズ-オンを有効にするのが一番いいです.
 
2.抽象及びサブビーム定義
Springは、明示的かつ暗黙的な方法で抽象的なBeaビンを説明することができる.違いは、明示的にはクラス属性が定義されていますが、陰的にはありません.
表示:
<bean id="abstractBean1" class="...." abstract="true"/>

<bean id="childBean1" class="...." parent="abstractBean1"/>
 暗黙の型:
<bean id="abstractBean1"  abstract="true"/>

<bean id="childBean1" class="...." parent="abstractBean1"/>
parent属性の宣言は、相続関係のマッピングを完了した.
 
同様に、「多重」の継承が可能である.
<bean id="abstractBean1" class="...." abstract="true"/>

<bean id="abstractBean2" class="...." parent="abstractBean1" abstract="true"/>

<bean id="childBean3" class="...." parent="abstractBean2"/>
 このようにチルドレン3は、ビーム1とビーム2の属性を同時に持っています.
 
3.aliasの別名
応用と受管ビーム間の結合性を低減できる.
<bean id="testBean" class="....."/>
<alias name="testBean" alias="tb"/>
 このビーンは別名でも入手できます.
 
ITestBean tb = (ITestBean)factory.getBean("tb");
 
4.プロファイルのプロパティを読み込みます.
例えば、userinfo.propertiesの内容は以下の通りです.
db.username=scott
db.password=tiger
 SpringのPropertyPlace HolderConfigrerによってBenFactoryPostProcessorインターフェースを実現してファイルを管理することができます.
<bean id="propertyPlaceholderConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
 <list>
  <value>userinfo.properties</value>
</list>
</property>
</bean>
 配置が整ったら、以下のBeanを宣言してアメリカの情報を取得することができます.
 
<bean name="userinfo" class....>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</bean
 
*Springは、PropertyPlaceholder Configrerオブジェクトの配置の代わりに要素を提供しています.
 
<context:property-placeholder location="userinfo.properties"/>
 
*要素は、propertiesの中にカバーが必要な属性があるかどうかを確認し、上書きがあれば、チューブBeanの対応属性を保持します.
<context:property-override location="ui.properties"/>

<bean name="userInfo" class...>
<property name="username" value="un"/>
<property name="password" value="pw"/>
</bean>
5.管ビーンの役割範囲
シングルトン  デフォルトの定義
prototype DI容器はアクティブで実用化されません.
request
セッション
global Session
 
*lazy-nit=「true」は、IOC容器を構築する際にこのが実用化されないという意味ではありません.BenAがBenBを参照する必要があるなら、Aは遅延負荷を有効にしていないので、Bは有効にしています.容器はAの実装が完了するとBを参照していることが分かりますので、容器はすぐにBを実装します.Bが遅延負荷を設定しているかどうかに関わらず、Aが必要であれば、容器は迷わずBの実装を完了します.