2010-02-13 3 views
0

J'ai le code dispersés à travers un service dans un plug-in, en utilisant AntBuilder comme ceci:Injecter un AntBuilder en utilisant Spring?

def ant = new AntBuilder() 

Il en résulte un code qui est vraiment difficile de tester je voudrais injecter un AntBuilder-portée prototype que je peux remplacer avec un simulacre. Mais, je suis à peu près un débutant de printemps ... comment ferais-je cela?

J'ai essayé ceci dans la simple mise /grails-app/conf/spring/resources.groovy:

beans = { 
antBuilderBean(groovy.util.AntBuilder){b -> 
     b.scope="prototype" 
    } 
} 

et

class MyService { 
    def antBuilderBean 

mais antBuilderBean est nulle. Si je mets la définition du bean dans l'application resources.groovy (plutôt que le plugin's resources.groovy), alors le nom du bean apparaît dans le contexte de l'application, mais antBuilderBean reste à null dans le service code.

Ai-je besoin d'une sorte de grain d'usine ici? Ou dois-je explicitement construire le bean à partir du contexte Spring ou quelque chose?

Répondre

0

Cela fonctionne pour moi dans une nouvelle application suffit de copier/coller votre code. Essayez d'exécuter 'grails clean' - cela résout souvent les problèmes avec un comportement inattendu comme celui-ci.

+0

Merci! J'ai également trouvé que je pouvais mettre la définition du bean dans la méthode GrailsPlugin.groovy doWithSpring(). – Wayne

+0

Désolé, n'a pas compris que c'était dans un plugin - doWithSpring() est l'endroit pour enregistrer des beans dans un plugin. –

Questions connexes