簡體   English   中英

將Spring Bean注入Groovy腳本

[英]Injecting Spring Beans to Groovy Script

我已經看到許多關於Groovy對象作為Spring Bean的示例,反之亦然。 我在Java EE應用程序中使用Groovy,如下所示:

GroovyCodeSource groovyCodeSource = new GroovyCodeSource(urlResource);
Class groovyClass = loader.parseClass(groovyCodeSource, false);
return (GroovyObject) groovyClass.newInstance();

這樣,將使用Groovy編寫的帶有@Configurable批注的類注入Spring Bean。 現在還可以。

如何使用GroovyScriptEngine獲得相同的GroovyScriptEngine 我不想定義一個類,而是希望它像普通腳本一樣工作。 Spring / Groovy有能力做到這一點嗎?

我已經看過有關此的帖子,但不確定是否能回答我的問題:

這里

您是說要向腳本中添加屬性並注入這些屬性嗎? 您會提供吸氣劑和吸氣劑嗎? 這對我來說沒有多大意義。 有意義的是將mainContext添加到腳本的綁定中,或將選定的bean添加到綁定中。

然后,可以直接在腳本中訪問這些bean(或上下文),就像注入了它們一樣。

def ctx = grailsApplication.mainContext
def binding = new Binding([:])
Map variables = [
        'aService',
        'anotherService'
].inject([config:grailsApplication.config, mainContext:ctx]) { m, beanName ->
    def bean = ctx.getBean(beanName)
    m[beanName] = bean
    m
}
binding.variables << variables

def compiler = new CompilerConfiguration()
compiler.setScriptBaseClass(baseScriptClassName)
def shell = new GroovyShell(new GroovyClassLoader(), binding, compiler)
script=shell.parse(scriptStr)
script.binding=binding


script.init()
script.run()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM