我有一个原型bean“客户端”,每次实例化时我都想为其调用一个方法“addHandler”。我为此使用'MethodInvokingFactoryBean'。在文档中,我可以看到默认情况下 MethodInvokingFactoryBean 以单例方式运行并缓存“getObject”的结果以在后续调用中返回。
为了规避这一点,我想用'false'调用'setSingleton'。我不确定如何做到这一点。
<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>