2009-11-04 50 views
4

假設我已經在src/groovy下的grails-app/services和常規Groovy類'Foo'下有這樣的BarService。Grails:常規groovy類中的依賴注入

class Foo { 
    def barService 
} 

是否有什麼辦法可以在運行時編程把它變成一個Spring bean?只是爲了澄清,我想獲得一個BarService引用到barService字段的引用。

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

回答

6

請參閱this answer關於如何獲取applicationContext的實例。接線bean屬性可以做到這樣:

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

我會建議使用普通的Spring beans(也許原型範圍的),而不是這種做法,雖然。