2014-02-21 4 views
0

Я видел много примеров о объектах Groovy как фасоли весны, но не наоборот. Я использую Groovy в приложении Java EE, как это:Вводные весенние бобы в Groovy Script

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

Таким образом, классы, написанные на Groovy с @Configurable аннотации впрыскивается с пружинной фасолью. Сейчас все в порядке.

Как я могу получить то же самое, используя GroovyScriptEngine? Я не хочу определять класс, и я хочу, чтобы он работал как простой скрипт. Возможно ли это Spring/Groovy?

Я видел пост про это, но я не уверен, отвечает ли мой вопрос или нет:

HERE

ответ

0

вы имеете в виду, что вы хотите добавить свойства к сценарию, и вводить их? Не могли бы вы предоставить геттер и сеттер? Это не имеет большого значения для меня. Что имеет смысл, добавляет mainContext в привязки скрипта или добавляет выбранные компоненты в привязки.

Эти бобы - или контекст - будут доступны непосредственно в скрипте, как если бы он был введен.

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() 
Смежные вопросы