我有一个方法调用bean,它调用一个方法在targetBean上执行某种初始化,另一个bean需要一个twitter类,尽管已初始化。
<bean id="twitter" class="twitter4j.Twitter"></bean>
<bean id="twitterInjector"
class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="twitter"/>
<property name="targetMethod">
<value>setOAuthConsumer</value>
</property>
<property name="arguments">
<list>
<value>consumerKey</value>
<value>consumerSecret</value>
</list>
</property>
</bean>
<bean id="MyPageController"
class="com.hardwire.controller.MyPageController">
<property name="twitter" ref="What should I put here? twitter or
twitterInjector?/>
.
.
.
</bean>
我应该注入MyPageController,twitterInjector或twitter?
答案 0 :(得分:1)
MethodInvokingFactoryBean
- 与Spring中的所有其他工厂bean一样 - 主要用于生成新bean;在这种特殊情况下,通过调用其他bean(或类)的方法。您的setOAuthConsumer
方法似乎不会返回bean,因此在这些情况下使用MethodInvokingFactoryBean
可能不是最佳方法。
如果我弄错了并且它确实返回了一个bean(在这种情况下考虑重命名)并且那是你想要在控制器中注入的bean,那么你应该使用twitterInjector
作为ref值。如果您真的想在控制器中使用twitter
,那么您应该使用twitter
。