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