2010-10-11 4 views
1

J'ai une classe statique ResourceFetcher avec une méthode statique fetchResource(String reference). Je veux injecter la ressource retournée par elle dans une autre classe JobRunner. Quelqu'un peut-il spécifier la façon la plus propre de le faire? Je ne veux pas passer ResourceFetcher dans JobRunner. En fait, j'ai un enum avec un ensemble de clés, et j'ai besoin de passer une carte de paires clé-valeur en JobRunner avec les valeurs obtenues en appelant fetchResource.Question d'injection de ressort

Onething Je tiens à préciser que ResourceFetcher classe fetchResource retourne un objet de type String

Merci à l'avance.

Répondre

0

Si la méthode fetchResource est statique sur ResourceFetcher, pourquoi JobRunner ne peut-il pas simplement s'y référer? Je ne vois pas le besoin d'injecter ResourceFetcher.

+0

Comment cela serait-il générique si ResourceFetcher si je veux transformer 10 fichiers sql dans classpath en chaînes sql? Pour être précis, j'ai eu une carte statique comme suit dans mon JobRunner - Mapper queryTempl où chaque valeurs où sql requêtes extrait de ResourceFetcher en tant que chaîne. Je me demandais si c'était une bonne façon de faire les choses. – kuriouskat

2
<bean id="resource" class="com.x.y.ResourceFetcher" factory-method="fetchResource"> 
    <constructor-arg value="someReference"/> 
</bean> 

Vous pouvez ensuite injecter resource dans votre haricot JobRunner.

+0

Génial. C'est ce que j'ai anticipé aussi. Que faire si l'objet retourné par factory-method n'est pas de type class ResourceFetcher? – kuriouskat

+0

@kuriouskat: Le type de bean sera ce qui est retourné par la méthode, le type de 'ResourceFetcher' n'est pas pertinent pour le résultat. – skaffman