spring依存注入配置の詳細
Technoratiマーク:spring、依存注入、ioc
前回のspring依存注入に続き、spring依存注入の方式(ビルダー注入、set注入、静的工場注入と実例的工場注入)を説明しました.今回はspring依存注入配置ファイルに深く入りました.
sprint依存注入方式では、依存対象と基本値(基本データタイプとString値)を注入するためにとを使用することが分かる.様々な値の配置について詳しく説明します.
一、基本値(基本データタイプとString)
xml設定ファイルでは、属性「value」を使ってパラメータの値を指定します.ちなみに、javaBensのPropertyEditorsはこれらのstring値を対応するデータタイプに変換します.
二、元素idref
idref要素は、容器内の他のbeanのidをまたは要素に送るために使用され、同時にエラー検証機能を提供します.
また、インデックスのbeanも同じxmlプロファイルにある場合は、属性localを使用して、xmlの解釈器より早くこのbeanのidを確認することができます.
「constructor-arg/」または「property/」の要素の内部では、ref要素も使用できます.beanで指定された属性の値を容器の中のもう一つのbeanへの参照として設定します.refには三つの属性bean、local、parentがあります.その具体的な違いは以下の通りです.
四、内部bean
<constructor-arg/>または<property/>要素の内部で<bean/>を使用して内部beanを定義することもできます.
五、コレクション
Java collection内のList、Set、Map、Proptiesの値は、以下のように設定するために、要素
前回のspring依存注入に続き、spring依存注入の方式(ビルダー注入、set注入、静的工場注入と実例的工場注入)を説明しました.今回はspring依存注入配置ファイルに深く入りました.
sprint依存注入方式では、依存対象と基本値(基本データタイプとString値)を注入するために
一、基本値(基本データタイプとString)
xml設定ファイルでは、属性「value」を使ってパラメータの値を指定します.ちなみに、javaBensのPropertyEditorsはこれらのstring値を対応するデータタイプに変換します.
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<!-- setDriverClassName(String) -->
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</bean>
p名前空間を使って、より簡潔な構成を見てみます.<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<!-- p �C>
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/mydb"
p:username="root"
p:password="masterkaoli"/>
</beans>
p名前空間を使って配置を簡略化しましたが、ある程度足りないところがあります.スペルミスを再実行する必要があります.デザイン時には分かりません.もちろんIDEAやspringSourceなどのコード提示機能があるIDEを使えば、これらのミスを避けることができます.他にも、propertyを配置する方法があります.下にjava.util.ProPertiesを設定します.<bean id="mappings"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="properties">
<value>
jdbc.driver.className=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mydb
</value>
</property>
</bean>
上記のような構成は提唱に値するものであり、属性valueを用いて構成するのではなく、<value/>を使用して値を設定する.二、元素idref
idref要素は、容器内の他のbeanのidを
<bean id="theTargetBean" class="..."/>
<bean id="theClientBean" class="...">
<property name="targetName">
<idref bean="theTargetBean" />
</property>
</bean>
上記のbeanの定義は以下の構成に等しい.<bean id="theTargetBean" class="..." />
<bean id="client" class="...">
<property name="targetName" value="theTargetBean" />
</bean>
第一の方法を推奨します.idrefは容器が配備時に「theTarget Bean」の検証を提供しています.第二の方法を使うと、clientが初期化された時に発見されます.特にこのclientはprototypeです.容器が初期化されてから長い時間が必要です.また、インデックスのbeanも同じxmlプロファイルにある場合は、属性localを使用して、xmlの解釈器より早くこのbeanのidを確認することができます.
<property name="targetName">
<!-- id theTargetBean bean , -->
<idref local="theTargetBean"/>
</property>
三、他のbeanの索引(依存対象)「constructor-arg/」または「property/」の要素の内部では、ref要素も使用できます.beanで指定された属性の値を容器の中のもう一つのbeanへの参照として設定します.refには三つの属性bean、local、parentがあります.その具体的な違いは以下の通りです.
四、内部bean
<constructor-arg/>または<property/>要素の内部で<bean/>を使用して内部beanを定義することもできます.
<bean id="outer" class="...">
<!-- , bean -->
<property name="target">
<bean class="com.example.Person"> <!-- bean -->
<property name="name" value="Fiona Apple"/>
<property name="age" value="25"/>
</bean>
</property>
</bean>
注意したいのは、内部のbeanの定義では、IDやname属を指定する必要はなく、scopeを指定する必要もなく、これらは自動的に容器に無視されます.内部のbeanの作成はouterbeanの作成に伴って作成されます.五、コレクション
Java collection内のList、Set、Map、Proptiesの値は、以下のように設定するために、要素
- 、