org.springframework.scripting.support

## 类 StandardScriptFactory

- java.lang.Object
- - org.springframework.scripting.support.StandardScriptFactory

- 所有已实现的接口:
    org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, ScriptFactory

      public class StandardScriptFactory
      extends Object
      implements ScriptFactory, org.springframework.beans.factory.BeanClassLoaderAware

  `ScriptFactory` implementation based on the JSR-223 script engine abstraction (as included in Java 6+). Supports JavaScript, Groovy, JRuby, and other JSR-223 compliant engines.

  Typically used in combination with a `ScriptFactoryPostProcessor`; see the latter's javadoc for a configuration example.

  从以下版本开始:
    4.2
  作者:
    Juergen Hoeller
  另请参阅:
    `ScriptFactoryPostProcessor`

- - ### 构造器概要

    构造器
    构造器和说明
    `StandardScriptFactory(String scriptSourceLocator)` Create a new StandardScriptFactory for the given script source.
    `StandardScriptFactory(String scriptSourceLocator, Class<?>... scriptInterfaces)` Create a new StandardScriptFactory for the given script source.
    `StandardScriptFactory(String scriptEngineName, String scriptSourceLocator)` Create a new StandardScriptFactory for the given script source.
    `StandardScriptFactory(String scriptEngineName, String scriptSourceLocator, Class<?>... scriptInterfaces)` Create a new StandardScriptFactory for the given script source.

  - ### 方法概要

    所有方法 实例方法 具体方法
    限定符和类型 | 方法和说明
    --- | ---
    `protected Object` | `adaptToInterfaces(Object script, ScriptSource scriptSource, Class<?>... actualInterfaces)`
    `protected Object` | `evaluateScript(ScriptSource scriptSource)`
    `Object` | `getScriptedObject(ScriptSource scriptSource, Class<?>... actualInterfaces)` Load and parse the script via JSR-223's ScriptEngine.
    `Class<?>` | `getScriptedObjectType(ScriptSource scriptSource)` Determine the type of the scripted Java object.
    `Class<?>[]` | `getScriptInterfaces()` Return the business interfaces that the script is supposed to implement.
    `String` | `getScriptSourceLocator()` Return a locator that points to the source of the script.
    `boolean` | `requiresConfigInterface()` Return whether the script requires a config interface to be generated for it.
    `boolean` | `requiresScriptedObjectRefresh(ScriptSource scriptSource)` Determine whether a refresh is required (e.g. through ScriptSource's `isModified()` method).
    `protected ScriptEngine` | `retrieveScriptEngine(ScriptSource scriptSource)`
    `void` | `setBeanClassLoader(ClassLoader classLoader)`
    `String` | `toString()`

    - ### 从类继承的方法 java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### 构造器详细资料

    - #### StandardScriptFactory

          public StandardScriptFactory(String scriptSourceLocator)

      Create a new StandardScriptFactory for the given script source.
      参数:
        `scriptSourceLocator` - a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.

    - #### StandardScriptFactory

          public StandardScriptFactory(String scriptSourceLocator,
                                       Class<?>... scriptInterfaces)

      Create a new StandardScriptFactory for the given script source.
      参数:
        `scriptSourceLocator` - a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.
        `scriptInterfaces` - the Java interfaces that the scripted object is supposed to implement

    - #### StandardScriptFactory

          public StandardScriptFactory(String scriptEngineName,
                                       String scriptSourceLocator)

      Create a new StandardScriptFactory for the given script source.
      参数:
        `scriptEngineName` - the name of the JSR-223 ScriptEngine to use (explicitly given instead of inferred from the script source)
        `scriptSourceLocator` - a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.

    - #### StandardScriptFactory

          public StandardScriptFactory(@Nullable
                                       String scriptEngineName,
                                       String scriptSourceLocator,
                                       @Nullable
                                       Class<?>... scriptInterfaces)

      Create a new StandardScriptFactory for the given script source.
      参数:
        `scriptEngineName` - the name of the JSR-223 ScriptEngine to use (explicitly given instead of inferred from the script source)
        `scriptSourceLocator` - a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.
        `scriptInterfaces` - the Java interfaces that the scripted object is supposed to implement

  - ### 方法详细资料

    - #### setBeanClassLoader

          public void setBeanClassLoader(ClassLoader classLoader)

      指定者:
        `setBeanClassLoader` 在接口中 `org.springframework.beans.factory.BeanClassLoaderAware`

    - #### getScriptSourceLocator

          public String getScriptSourceLocator()

      从接口复制的说明: `ScriptFactory`
      Return a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.

      Typical supported locators are Spring resource locations (such as "file:C:/myScript.bsh" or "classpath:myPackage/myScript.bsh") and inline scripts ("inline:myScriptText...").

      指定者:
        `getScriptSourceLocator` 在接口中 `ScriptFactory`
      返回:
        the script source locator
      另请参阅:
        `ScriptFactoryPostProcessor.convertToScriptSource(java.lang.String, java.lang.String, org.springframework.core.io.ResourceLoader)`, `ResourceLoader`

    - #### getScriptInterfaces

          @Nullable
          public Class<?>[] getScriptInterfaces()

      从接口复制的说明: `ScriptFactory`
      Return the business interfaces that the script is supposed to implement.

      Can return `null` if the script itself determines its Java interfaces (such as in the case of Groovy).

      指定者:
        `getScriptInterfaces` 在接口中 `ScriptFactory`
      返回:
        the interfaces for the script

    - #### requiresConfigInterface

          public boolean requiresConfigInterface()

      从接口复制的说明: `ScriptFactory`
      Return whether the script requires a config interface to be generated for it. This is typically the case for scripts that do not determine Java signatures themselves, with no appropriate config interface specified in `getScriptInterfaces()`.
      指定者:
        `requiresConfigInterface` 在接口中 `ScriptFactory`
      返回:
        whether the script requires a generated config interface
      另请参阅:
        `ScriptFactory.getScriptInterfaces()`

    - #### getScriptedObject

          @Nullable
          public Object getScriptedObject(ScriptSource scriptSource,
                                                     @Nullable
                                                     Class<?>... actualInterfaces)
                                              throws IOException,
                                                     ScriptCompilationException

      Load and parse the script via JSR-223's ScriptEngine.
      指定者:
        `getScriptedObject` 在接口中 `ScriptFactory`
      参数:
        `scriptSource` - the actual ScriptSource to retrieve the script source text from (never `null`)
        `actualInterfaces` - the actual interfaces to expose, including script interfaces as well as a generated config interface (if applicable; may be `null`)
      返回:
        the scripted Java object
      抛出:
        `IOException` - if script retrieval failed
        `ScriptCompilationException` - if script compilation failed

    - #### evaluateScript

          protected Object evaluateScript(ScriptSource scriptSource)

    - #### retrieveScriptEngine

          @Nullable
          protected ScriptEngine retrieveScriptEngine(ScriptSource scriptSource)

    - #### adaptToInterfaces

          @Nullable
          protected Object adaptToInterfaces(@Nullable
                                                        Object script,
                                                        ScriptSource scriptSource,
                                                        Class<?>... actualInterfaces)

    - #### getScriptedObjectType

          @Nullable
          public Class<?> getScriptedObjectType(ScriptSource scriptSource)
                                                    throws IOException,
                                                           ScriptCompilationException

      从接口复制的说明: `ScriptFactory`
      Determine the type of the scripted Java object.

      Implementations are encouraged to cache script metadata such as a generated script class. Note that this method may be invoked concurrently and must be implemented in a thread-safe fashion.

      指定者:
        `getScriptedObjectType` 在接口中 `ScriptFactory`
      参数:
        `scriptSource` - the actual ScriptSource to retrieve the script source text from (never `null`)
      返回:
        the type of the scripted Java object, or `null` if none could be determined
      抛出:
        `IOException` - if script retrieval failed
        `ScriptCompilationException` - if script compilation failed

    - #### requiresScriptedObjectRefresh

          public boolean requiresScriptedObjectRefresh(ScriptSource scriptSource)

      从接口复制的说明: `ScriptFactory`
      Determine whether a refresh is required (e.g. through ScriptSource's `isModified()` method).
      指定者:
        `requiresScriptedObjectRefresh` 在接口中 `ScriptFactory`
      参数:
        `scriptSource` - the actual ScriptSource to retrieve the script source text from (never `null`)
      返回:
        whether a fresh `ScriptFactory.getScriptedObject(org.springframework.scripting.ScriptSource, java.lang.Class<?>...)` call is required
      另请参阅:
        `ScriptSource.isModified()`

    - #### toString

          public String toString()

      覆盖:
        `toString` 在类中 `Object`