类 GroovyScriptFactory
- java.lang.Object
- org.springframework.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.Note: Spring 4.0 supports Groovy 1.8 and higher.
- 从以下版本开始:
- 2.0
- 作者:
- Juergen Hoeller, Rob Harrop, Rod Johnson
- 另请参阅:
GroovyClassLoader
,ScriptFactoryPostProcessor
构造器概要
构造器 构造器 说明 GroovyScriptFactory(String scriptSourceLocator)
Create a new GroovyScriptFactory for the given script source.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.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.
方法概要
所有方法 实例方法 具体方法 修饰符和类型 方法 说明 protected groovy.lang.GroovyClassLoader
buildGroovyClassLoader(ClassLoader classLoader)
Build aGroovyClassLoader
for the givenClassLoader
.protected Object
executeScript(ScriptSource scriptSource, Class<?> scriptClass)
Instantiate the given Groovy script class and run it if necessary.groovy.lang.GroovyClassLoader
getGroovyClassLoader()
Return the GroovyClassLoader used by this script factory.Object
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<?>[]
getScriptInterfaces()
Groovy scripts determine their interfaces themselves, hence we don't need to explicitly expose interfaces here.String
getScriptSourceLocator()
Return a locator that points to the source of the script.boolean
requiresConfigInterface()
Groovy scripts do not need a config interface, since they expose their setters as public methods.boolean
requiresScriptedObjectRefresh(ScriptSource scriptSource)
Determine whether a refresh is required (e.g. through ScriptSource'sisModified()
method).void
setBeanClassLoader(ClassLoader classLoader)
Callback that supplies the beanclass loader
to a bean instance.void
setBeanFactory(BeanFactory beanFactory)
Callback that supplies the owning factory to a bean instance.String
toString()
构造器详细资料
GroovyScriptFactory
public GroovyScriptFactory(String scriptSourceLocator)
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
)- 另请参阅:
GroovyObjectCustomizer.customize(groovy.lang.GroovyObject)
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
)- 从以下版本开始:
- 4.3.3
- 另请参阅:
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- 从以下版本开始:
- 4.3.3
- 另请参阅:
CompilerConfiguration.addCompilationCustomizers(org.codehaus.groovy.control.customizers.CompilationCustomizer...)
,ImportCustomizer
方法详细资料
setBeanFactory
public void setBeanFactory(BeanFactory beanFactory)
从接口复制的说明:BeanFactoryAware
Callback that supplies the owning factory to a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as
InitializingBean.afterPropertiesSet()
or a custom init-method.- 指定者:
setBeanFactory
在接口中BeanFactoryAware
- 参数:
beanFactory
- owning BeanFactory (nevernull
). The bean can immediately call methods on the factory.- 另请参阅:
BeanInitializationException
setBeanClassLoader
public void setBeanClassLoader(ClassLoader classLoader)
从接口复制的说明: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.- 指定者:
setBeanClassLoader
在接口中BeanClassLoaderAware
- 参数:
classLoader
- the owning class loader
getGroovyClassLoader
public groovy.lang.GroovyClassLoader getGroovyClassLoader()
Return the GroovyClassLoader used by this script factory.
buildGroovyClassLoader
protected groovy.lang.GroovyClassLoader buildGroovyClassLoader(@Nullable ClassLoader classLoader)
Build aGroovyClassLoader
for the givenClassLoader
.- 参数:
classLoader
- the ClassLoader to build a GroovyClassLoader for- 从以下版本开始:
- 4.3.3
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()
Groovy scripts determine their interfaces themselves, hence we don't need to explicitly expose interfaces here.- 指定者:
getScriptInterfaces
在接口中ScriptFactory
- 返回:
null
always
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
- 另请参阅:
ScriptFactory.getScriptInterfaces()
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
从接口复制的说明: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 (nevernull
)- 返回:
- the type of the scripted Java object, or
null
if none could be determined - 抛出:
IOException
- if script retrieval failedScriptCompilationException
- if script compilation failed
requiresScriptedObjectRefresh
public boolean requiresScriptedObjectRefresh(ScriptSource scriptSource)
从接口复制的说明:ScriptFactory
Determine 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(org.springframework.scripting.ScriptSource, java.lang.Class<?>...)
call is required - 另请参阅:
ScriptSource.isModified()
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