Class StandardScriptEvaluator
- java.lang.Object
- org.springframework.scripting.support.StandardScriptEvaluator
- All Implemented Interfaces:
Aware,BeanClassLoaderAware,ScriptEvaluator
public class StandardScriptEvaluator extends Object implements ScriptEvaluator, BeanClassLoaderAware
javax.script(JSR-223) based implementation of Spring'sScriptEvaluatorstrategy interface.- Since:
- 4.0
- Author:
- Juergen Hoeller, Costin Leau
- See Also:
ScriptEngine.eval(String)
Constructor Summary
Constructors Constructor Description StandardScriptEvaluator()Construct a newStandardScriptEvaluator.StandardScriptEvaluator(ClassLoader classLoader)Construct a newStandardScriptEvaluatorfor the given class loader.StandardScriptEvaluator(ScriptEngineManager scriptEngineManager)Construct a newStandardScriptEvaluatorfor the given JSR-223ScriptEngineManagerto obtain script engines from.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Objectevaluate(ScriptSource script)Evaluate the given script.Objectevaluate(ScriptSource script, Map<String,Object> argumentBindings)Evaluate the given script with the given arguments.protected ScriptEnginegetScriptEngine(ScriptSource script)Obtain the JSR-223 ScriptEngine to use for the given script.voidsetBeanClassLoader(ClassLoader classLoader)Callback that supplies the beanclass loaderto a bean instance.voidsetEngineName(String engineName)Set the name of the script engine for evaluating the scripts (e.g.voidsetGlobalBindings(Map<String,Object> globalBindings)Set the globally scoped bindings on the underlying script engine manager, shared by all scripts, as an alternative to script argument bindings.voidsetLanguage(String language)Set the name of the language meant for evaluating the scripts (e.g.
Constructor Detail
StandardScriptEvaluator
public StandardScriptEvaluator()
Construct a newStandardScriptEvaluator.
StandardScriptEvaluator
public StandardScriptEvaluator(ClassLoader classLoader)
Construct a newStandardScriptEvaluatorfor the given class loader.- Parameters:
classLoader- the class loader to use for script engine detection
StandardScriptEvaluator
public StandardScriptEvaluator(ScriptEngineManager scriptEngineManager)
Construct a newStandardScriptEvaluatorfor the given JSR-223ScriptEngineManagerto obtain script engines from.- Parameters:
scriptEngineManager- the ScriptEngineManager (or subclass thereof) to use- Since:
- 4.2.2
Method Detail
setLanguage
public void setLanguage(String language)
Set the name of the language meant for evaluating the scripts (e.g. "Groovy").This is effectively an alias for
"engineName", potentially (but not yet) providing common abbreviations for certain languages beyond what the JSR-223 script engine factory exposes.- See Also:
setEngineName(java.lang.String)
setEngineName
public void setEngineName(String engineName)
Set the name of the script engine for evaluating the scripts (e.g. "Groovy"), as exposed by the JSR-223 script engine factory.- Since:
- 4.2.2
- See Also:
setLanguage(java.lang.String)
setGlobalBindings
public void setGlobalBindings(Map<String,Object> globalBindings)
Set the globally scoped bindings on the underlying script engine manager, shared by all scripts, as an alternative to script argument bindings.- Since:
- 4.2.2
- See Also:
evaluate(ScriptSource, Map),ScriptEngineManager.setBindings(Bindings),SimpleBindings
setBeanClassLoader
public void setBeanClassLoader(ClassLoader classLoader)
Description copied from interface:BeanClassLoaderAwareCallback that supplies the beanclass loaderto a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as
InitializingBean'sInitializingBean.afterPropertiesSet()method or a custom init-method.- Specified by:
setBeanClassLoaderin interfaceBeanClassLoaderAware- Parameters:
classLoader- the owning class loader; may benullin which case a defaultClassLoadermust be used, for example theClassLoaderobtained viaClassUtils.getDefaultClassLoader()
evaluate
public Object evaluate(ScriptSource script)
Description copied from interface:ScriptEvaluatorEvaluate the given script.- Specified by:
evaluatein interfaceScriptEvaluator- Parameters:
script- the ScriptSource for the script to evaluate- Returns:
- the return value of the script, if any
evaluate
public Object evaluate(ScriptSource script, Map<String,Object> argumentBindings)
Description copied from interface:ScriptEvaluatorEvaluate the given script with the given arguments.- Specified by:
evaluatein interfaceScriptEvaluator- Parameters:
script- the ScriptSource for the script to evaluateargumentBindings- the key-value pairs to expose to the script, typically as script variables (may benullor empty)- Returns:
- the return value of the script, if any
getScriptEngine
protected ScriptEngine getScriptEngine(ScriptSource script)
Obtain the JSR-223 ScriptEngine to use for the given script.- Parameters:
script- the script to evaluate- Returns:
- the ScriptEngine (never
null)