Spring beanの参考例
Springでは、Beanは、同じBean構成ファイルまたは別のBean構成ファイル内のBean参照を指定することによって、相互に「アクセス」することができます。
1.異なるXMLファイルのBean
別のXMLファイルにあるBeanを参照している場合は、
ref` 'タグ、
bean’属性で参照することができます。
<ref bean="someBean"/>
この例では、「Spring-Common.xml」で宣言されたBean ”
OutputHelper
“は、 “Spring-Output.xml” – ”
CsvOutputGenerator
“または ”
JsonOutputGenerator
“内の他のBeanにアクセスできます。プロパティタグで ‘ref’属性を使用して
File:Spring-Common.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="OutputHelper" class="com.mkyong.output.OutputHelper"> <property name="outputGenerator" > <ref bean="CsvOutputGenerator"/> </property> </bean> </beans>
File:Spring-Output.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator"/> <bean id="JsonOutputGenerator" class="com.mkyong.output.impl.JsonOutputGenerator"/> </beans>
2.同じXMLファイル内のBean
同じXMLファイル内のBeanを参照している場合は、
ref` 'タグ、
local’属性で参照することができます。
<ref local="someBean"/>
この例では、
` Spring-Common.xml
‘で宣言されたBean ”
OutputHelper
“は、 ”
CsvOutputGenerator
“または ”
JsonOutputGenerator
“にアクセスできます。
File:Spring-Common.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="OutputHelper" class="com.mkyong.output.OutputHelper"> <property name="outputGenerator" > <ref local="CsvOutputGenerator"/> </property> </bean> <bean id="CsvOutputGenerator" class="com.mkyong.output.impl.CsvOutputGenerator"/> <bean id="JsonOutputGenerator" class="com.mkyong.output.impl.JsonOutputGenerator"/> </beans>
結論
実際には、 ‘ref’タグは同じXMLファイルまたは異なるXMLファイルのいずれかにBeanにアクセスできますが、プロジェクトの読みやすさのために、同じXMLファイルで宣言されたBeanを参照する場合は ‘local’属性を使用してください。