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's ScriptEvaluator strategy interface.
Since:
4.0
Author:
Juergen Hoeller, Costin Leau
See Also:
  • Constructor Details

    • StandardScriptEvaluator

      public StandardScriptEvaluator()
      Construct a new StandardScriptEvaluator.
    • StandardScriptEvaluator

      public StandardScriptEvaluator(ClassLoader classLoader)
      Construct a new StandardScriptEvaluator for the given class loader.
      Parameters:
      classLoader - the class loader to use for script engine detection
    • StandardScriptEvaluator

      public StandardScriptEvaluator(ScriptEngineManager scriptEngineManager)
      Construct a new StandardScriptEvaluator for the given JSR-223 ScriptEngineManager to obtain script engines from.
      Parameters:
      scriptEngineManager - the ScriptEngineManager (or subclass thereof) to use
      Since:
      4.2.2
  • Method Details

    • 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

      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:
    • 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:
    • setBeanClassLoader

      public void setBeanClassLoader(ClassLoader classLoader)
      Description copied from interface: BeanClassLoaderAware
      Callback that supplies the bean class 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 interface BeanClassLoaderAware
      Parameters:
      classLoader - the owning class loader
    • evaluate

      @Nullable public Object evaluate(ScriptSource script)
      Description copied from interface: ScriptEvaluator
      Evaluate the given script.
      Specified by:
      evaluate in interface ScriptEvaluator
      Parameters:
      script - the ScriptSource for the script to evaluate
      Returns:
      the return value of the script, if any
    • evaluate

      @Nullable public Object evaluate(ScriptSource script, @Nullable Map<String,Object> argumentBindings)
      Description copied from interface: ScriptEvaluator
      Evaluate the given script with the given arguments.
      Specified by:
      evaluate in interface ScriptEvaluator
      Parameters:
      script - the ScriptSource for the script to evaluate
      argumentBindings - the key-value pairs to expose to the script, typically as script variables (may be null 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)