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’属性を使用してください。