类 GroovyScriptFactory
java.lang.Object
cn.taketoday.scripting.groovy.GroovyScriptFactory
- 所有已实现的接口:
Aware,BeanClassLoaderAware,BeanFactoryAware,ScriptFactory
public class GroovyScriptFactory
extends Object
implements ScriptFactory, BeanFactoryAware, BeanClassLoaderAware
ScriptFactory implementation
for a Groovy script.
Typically used in combination with a
ScriptFactoryPostProcessor;
see the latter's javadoc for a configuration example.
supports Groovy 1.8 and higher.
- 从以下版本开始:
- 4.0
- 作者:
- Juergen Hoeller, Rob Harrop, Rod Johnson
- 另请参阅:
-
GroovyClassLoaderScriptFactoryPostProcessor
-
构造器概要
构造器构造器说明GroovyScriptFactory(String scriptSourceLocator) Create a new GroovyScriptFactory for the given script source.GroovyScriptFactory(String scriptSourceLocator, GroovyObjectCustomizer groovyObjectCustomizer) Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can create a custom MetaClass to supply missing methods and otherwise change the behavior of the object.GroovyScriptFactory(String scriptSourceLocator, org.codehaus.groovy.control.CompilerConfiguration compilerConfiguration) Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can create a custom MetaClass to supply missing methods and otherwise change the behavior of the object.GroovyScriptFactory(String scriptSourceLocator, org.codehaus.groovy.control.customizers.CompilationCustomizer... compilationCustomizers) Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can customize Groovy's compilation process within the underlying GroovyClassLoader. -
方法概要
修饰符和类型方法说明protected groovy.lang.GroovyClassLoaderbuildGroovyClassLoader(ClassLoader classLoader) Build aGroovyClassLoaderfor the givenClassLoader.protected ObjectexecuteScript(ScriptSource scriptSource, Class<?> scriptClass) Instantiate the given Groovy script class and run it if necessary.groovy.lang.GroovyClassLoaderReturn the GroovyClassLoader used by this script factory.getScriptedObject(ScriptSource scriptSource, Class<?>... actualInterfaces) Loads and parses the Groovy script via the GroovyClassLoader.Class<?>getScriptedObjectType(ScriptSource scriptSource) Determine the type of the scripted Java object.Class<?>[]Groovy scripts determine their interfaces themselves, hence we don't need to explicitly expose interfaces here.Return a locator that points to the source of the script.booleanGroovy scripts do not need a config interface, since they expose their setters as public methods.booleanrequiresScriptedObjectRefresh(ScriptSource scriptSource) Determine whether a refresh is required (e.g. through ScriptSource'sisModified()method).voidsetBeanClassLoader(ClassLoader classLoader) voidsetBeanFactory(BeanFactory beanFactory) toString()
-
构造器详细资料
-
GroovyScriptFactory
Create a new GroovyScriptFactory for the given script source.We don't need to specify script interfaces here, since a Groovy script defines its Java interfaces itself.
- 参数:
scriptSourceLocator- a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.
-
GroovyScriptFactory
public GroovyScriptFactory(String scriptSourceLocator, @Nullable GroovyObjectCustomizer groovyObjectCustomizer) Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can create a custom MetaClass to supply missing methods and otherwise change the behavior of the object.- 参数:
scriptSourceLocator- a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.groovyObjectCustomizer- a customizer that can set a custom metaclass or make other changes to the GroovyObject created by this factory (may benull)- 另请参阅:
-
GroovyScriptFactory
public GroovyScriptFactory(String scriptSourceLocator, @Nullable org.codehaus.groovy.control.CompilerConfiguration compilerConfiguration) Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can create a custom MetaClass to supply missing methods and otherwise change the behavior of the object.- 参数:
scriptSourceLocator- a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.compilerConfiguration- a custom compiler configuration to be applied to the GroovyClassLoader (may benull)- 另请参阅:
-
GroovyClassLoader(ClassLoader, CompilerConfiguration)
-
GroovyScriptFactory
public GroovyScriptFactory(String scriptSourceLocator, org.codehaus.groovy.control.customizers.CompilationCustomizer... compilationCustomizers) Create a new GroovyScriptFactory for the given script source, specifying a strategy interface that can customize Groovy's compilation process within the underlying GroovyClassLoader.- 参数:
scriptSourceLocator- a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.compilationCustomizers- one or more customizers to be applied to the GroovyClassLoader compiler configuration- 另请参阅:
-
CompilerConfiguration.addCompilationCustomizers(org.codehaus.groovy.control.customizers.CompilationCustomizer...)ImportCustomizer
-
-
方法详细资料
-
setBeanFactory
- 指定者:
setBeanFactory在接口中BeanFactoryAware
-
setBeanClassLoader
- 指定者:
setBeanClassLoader在接口中BeanClassLoaderAware
-
getGroovyClassLoader
public groovy.lang.GroovyClassLoader getGroovyClassLoader()Return the GroovyClassLoader used by this script factory. -
buildGroovyClassLoader
Build aGroovyClassLoaderfor the givenClassLoader.- 参数:
classLoader- the ClassLoader to build a GroovyClassLoader for
-
getScriptSourceLocator
从接口复制的说明:ScriptFactoryReturn a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.Typical supported locators are Framework resource locations (such as "file:C:/myScript.bsh" or "classpath:myPackage/myScript.bsh") and inline scripts ("inline:myScriptText...").
- 指定者:
getScriptSourceLocator在接口中ScriptFactory- 返回:
- the script source locator
- 另请参阅:
-
getScriptInterfaces
Groovy scripts determine their interfaces themselves, hence we don't need to explicitly expose interfaces here.- 指定者:
getScriptInterfaces在接口中ScriptFactory- 返回:
nullalways
-
requiresConfigInterface
public boolean requiresConfigInterface()Groovy scripts do not need a config interface, since they expose their setters as public methods.- 指定者:
requiresConfigInterface在接口中ScriptFactory- 返回:
- whether the script requires a generated config interface
- 另请参阅:
-
getScriptedObject
@Nullable public Object getScriptedObject(ScriptSource scriptSource, @Nullable Class<?>... actualInterfaces) throws IOException, ScriptCompilationException Loads and parses the Groovy script via the GroovyClassLoader.- 指定者:
getScriptedObject在接口中ScriptFactory- 参数:
scriptSource- the actual ScriptSource to retrieve the script source text from (nevernull)actualInterfaces- the actual interfaces to expose, including script interfaces as well as a generated config interface (if applicable; may benull)- 返回:
- the scripted Java object
- 抛出:
IOException- if script retrieval failedScriptCompilationException- if script compilation failed- 另请参阅:
-
GroovyClassLoader
-
getScriptedObjectType
@Nullable public Class<?> getScriptedObjectType(ScriptSource scriptSource) throws IOException, ScriptCompilationException 从接口复制的说明:ScriptFactoryDetermine 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 (nevernull)- 返回:
- the type of the scripted Java object, or
nullif none could be determined - 抛出:
IOException- if script retrieval failedScriptCompilationException- if script compilation failed
-
requiresScriptedObjectRefresh
从接口复制的说明:ScriptFactoryDetermine whether a refresh is required (e.g. through ScriptSource'sisModified()method).- 指定者:
requiresScriptedObjectRefresh在接口中ScriptFactory- 参数:
scriptSource- the actual ScriptSource to retrieve the script source text from (nevernull)- 返回:
- whether a fresh
ScriptFactory.getScriptedObject(cn.taketoday.scripting.ScriptSource, java.lang.Class<?>...)call is required - 另请参阅:
-
executeScript
@Nullable protected Object executeScript(ScriptSource scriptSource, Class<?> scriptClass) throws ScriptCompilationException Instantiate the given Groovy script class and run it if necessary.- 参数:
scriptSource- the source for the underlying scriptscriptClass- the Groovy script class- 返回:
- the result object (either an instance of the script class or the result of running the script instance)
- 抛出:
ScriptCompilationException- in case of instantiation failure
-
toString
-