2009-09-05 6 views
0

J'ai une méthode invoquant bean qui appelle une méthode pour effectuer une sorte d'initialisation sur un targetBean et un autre bean qui a besoin d'une classe twitter bien qu'initialisée. Que dois-je injecter dans le MyPageController, twitterInjector ou Twitter?MethodInvokingBean question

<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> 

Répondre

1

MethodInvokingFactoryBean - comme toutes les autres haricots d'usine au printemps - est principalement destiné à produire une nouvelle fève; dans ce cas particulier en invoquant une méthode d'un autre bean (ou classe). Votre méthode setOAuthConsumer ne semble pas renvoyer un bean, donc utiliser MethodInvokingFactoryBean n'est peut-être pas la meilleure approche dans ces circonstances.

Si je me trompe et qu'il retourne un bean (dans ce cas, pensez à le renommer) et que c'est le bean que vous voulez injecter dans votre contrôleur, vous devez utiliser twitterInjector comme valeur ref. Si vous voulez vraiment twitter dans votre contrôleur, alors vous devriez utiliser twitter.