1

我有一个原型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>
4

0 回答 0