2009-11-04 6 views
4

Disons que j'ai un BarService sous grails-app/services et une classe Groovy régulière 'Foo' comme ça sous src/groovy. Y at-il un moyen de transformer cela en un bean Spring par programmation au moment de l'exécution? Juste pour clarifier, je veux obtenir une référence à BarService injecté dans le champ barService.Grails: injection de dépendances dans la classe groovy régulière

def fooInstance = new Foo() 
magic-create-spring-bean-function(fooInstance) 
assert fooInstance.barService 

Répondre

6

Voir this answer sur la façon d'obtenir l'instance du applicationContext. Câblage des propriétés de haricots peut se faire de cette façon:

def ctx = ... 
def foo = new Foo() 
ctx.beanFactory.autowireBeanProperties(foo, ctx.beanFactory.AUTOWIRE_BY_NAME, false) 

Je suggère d'utiliser des haricots de printemps réguliers (peut-être un prototype scope) plutôt que cette approche, cependant.

Questions connexes