インスタンス化されるたびにメソッド「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>