1

インスタンス化されるたびにメソッド「addHandler」を呼び出したいプロトタイプ Bean「クライアント」があります。これには「MethodInvokingFactoryBean」を使用しています。docsを見ると、デフォルトで MethodInvokingFactoryBean がシングルトン方式で動作し、「getObject」の結果をキャッシュして後続の呼び出しで返すことがわかります。

これを回避するには、「setSingleton」を「false」で呼び出します。これを行う方法がわかりません。

    <bean id="provider" class="com.example.credProvider">
        <constructor-arg value="key1"/>
    </bean>

    <bean id="handler" class="com.example.Handler"/>

    <bean id="client" class="com.example.DBClient" scope="prototype">
        <constructor-arg><ref local="provider"/></constructor-arg>
        <property name="endpoint" value="http://xyz:8080/" />
    </bean>

    <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="targetObject"><ref local="client"/></property>
        <property name="targetMethod"><value>addHandler</value></property>
        <property name="arguments">
            <ref local="handler" />
        </property>
    </bean>

このような scope="prototype" を追加すると役立ちますか? -

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" scope="prototype">
...
</bean>
4

0 に答える 0