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'sScriptEvaluator
strategy 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 newStandardScriptEvaluator
for the given class loader.StandardScriptEvaluator(ScriptEngineManager scriptEngineManager)
Construct a newStandardScriptEvaluator
for the given JSR-223ScriptEngineManager
to obtain script engines from.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Object
evaluate(ScriptSource script)
Evaluate the given script.Object
evaluate(ScriptSource script, Map<String,Object> argumentBindings)
Evaluate the given script with the given arguments.protected ScriptEngine
getScriptEngine(ScriptSource script)
Obtain the JSR-223 ScriptEngine to use for the given script.void
setBeanClassLoader(ClassLoader classLoader)
Callback that supplies the beanclass loader
to a bean instance.void
setEngineName(String engineName)
Set the name of the script engine for evaluating the scripts (e.g.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.void
setLanguage(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 newStandardScriptEvaluator
for the given class loader.- Parameters:
classLoader
- the class loader to use for script engine detection
StandardScriptEvaluator
public StandardScriptEvaluator(ScriptEngineManager scriptEngineManager)
Construct a newStandardScriptEvaluator
for the given JSR-223ScriptEngineManager
to 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:BeanClassLoaderAware
Callback that supplies the beanclass loader
to a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as
InitializingBean's
InitializingBean.afterPropertiesSet()
method or a custom init-method.- Specified by:
setBeanClassLoader
in interfaceBeanClassLoaderAware
- Parameters:
classLoader
- the owning class loader; may benull
in which case a defaultClassLoader
must be used, for example theClassLoader
obtained viaClassUtils.getDefaultClassLoader()
evaluate
public Object evaluate(ScriptSource script)
Description copied from interface:ScriptEvaluator
Evaluate the given script.- Specified by:
evaluate
in 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:ScriptEvaluator
Evaluate the given script with the given arguments.- Specified by:
evaluate
in interfaceScriptEvaluator
- Parameters:
script
- the ScriptSource for the script to evaluateargumentBindings
- the key-value pairs to expose to the script, typically as script variables (may benull
or 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
)