Class GroovyScriptFactory
- All Implemented Interfaces:
- Aware,- BeanClassLoaderAware,- BeanFactoryAware,- ScriptFactory
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.
- Since:
- 2.0
- Author:
- Juergen Hoeller, Rob Harrop, Rod Johnson
- See Also:
- 
- GroovyClassLoader
- ScriptFactoryPostProcessor
 
- 
Constructor SummaryConstructorsConstructorDescriptionGroovyScriptFactory(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.
- 
Method SummaryModifier and TypeMethodDescriptionprotected 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 (for example, through ScriptSource'sisModified()method).voidsetBeanClassLoader(ClassLoader classLoader) Callback that supplies the beanclass loaderto a bean instance.voidsetBeanFactory(BeanFactory beanFactory) Callback that supplies the owning factory to a bean instance.toString()
- 
Constructor Details- 
GroovyScriptFactoryCreate 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. - Parameters:
- scriptSourceLocator- a locator that points to the source of the script. Interpreted by the post-processor that actually creates the script.
 
- 
GroovyScriptFactorypublic 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.- Parameters:
- 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 be- null)
- See Also:
 
- 
GroovyScriptFactorypublic 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.- Parameters:
- 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 be- null)
- Since:
- 4.3.3
- See Also:
- 
- GroovyClassLoader(ClassLoader, CompilerConfiguration)
 
 
- 
GroovyScriptFactorypublic 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.- Parameters:
- 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
- Since:
- 4.3.3
- See Also:
- 
- CompilerConfiguration.addCompilationCustomizers(org.codehaus.groovy.control.customizers.CompilationCustomizer...)
- ImportCustomizer
 
 
 
- 
- 
Method Details- 
setBeanFactoryDescription copied from interface:BeanFactoryAwareCallback 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.- Specified by:
- setBeanFactoryin interface- BeanFactoryAware
- Parameters:
- beanFactory- owning BeanFactory (never- null). The bean can immediately call methods on the factory.
- See Also:
 
- 
setBeanClassLoaderDescription copied from interface:BeanClassLoaderAwareCallback that supplies the beanclass loaderto a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as InitializingBean'sInitializingBean.afterPropertiesSet()method or a custom init-method.- Specified by:
- setBeanClassLoaderin interface- BeanClassLoaderAware
- Parameters:
- classLoader- the owning class loader
 
- 
getGroovyClassLoaderpublic groovy.lang.GroovyClassLoader getGroovyClassLoader()Return the GroovyClassLoader used by this script factory.
- 
buildGroovyClassLoaderBuild aGroovyClassLoaderfor the givenClassLoader.- Parameters:
- classLoader- the ClassLoader to build a GroovyClassLoader for
- Since:
- 4.3.3
 
- 
getScriptSourceLocatorDescription copied from interface: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 Spring resource locations (such as "file:C:/myScript.bsh" or "classpath:myPackage/myScript.bsh") and inline scripts ("inline:myScriptText..."). - Specified by:
- getScriptSourceLocatorin interface- ScriptFactory
- Returns:
- the script source locator
- See Also:
 
- 
getScriptInterfacesGroovy scripts determine their interfaces themselves, hence we don't need to explicitly expose interfaces here.- Specified by:
- getScriptInterfacesin interface- ScriptFactory
- Returns:
- nullalways
 
- 
requiresConfigInterfacepublic boolean requiresConfigInterface()Groovy scripts do not need a config interface, since they expose their setters as public methods.- Specified by:
- requiresConfigInterfacein interface- ScriptFactory
- Returns:
- whether the script requires a generated config interface
- See Also:
 
- 
getScriptedObject@Nullable public Object getScriptedObject(ScriptSource scriptSource, @Nullable Class<?>... actualInterfaces) throws IOException, ScriptCompilationException Loads and parses the Groovy script via the GroovyClassLoader.- Specified by:
- getScriptedObjectin interface- ScriptFactory
- Parameters:
- 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)
- Returns:
- the scripted Java object
- Throws:
- IOException- if script retrieval failed
- ScriptCompilationException- if script compilation failed
- See Also:
- 
- GroovyClassLoader
 
 
- 
getScriptedObjectType@Nullable public Class<?> getScriptedObjectType(ScriptSource scriptSource) throws IOException, ScriptCompilationException Description copied from interface: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. - Specified by:
- getScriptedObjectTypein interface- ScriptFactory
- Parameters:
- scriptSource- the actual ScriptSource to retrieve the script source text from (never- null)
- Returns:
- the type of the scripted Java object, or nullif none could be determined
- Throws:
- IOException- if script retrieval failed
- ScriptCompilationException- if script compilation failed
 
- 
requiresScriptedObjectRefreshDescription copied from interface:ScriptFactoryDetermine whether a refresh is required (for example, through ScriptSource'sisModified()method).- Specified by:
- requiresScriptedObjectRefreshin interface- ScriptFactory
- Parameters:
- scriptSource- the actual ScriptSource to retrieve the script source text from (never- null)
- Returns:
- whether a fresh ScriptFactory.getScriptedObject(org.springframework.scripting.ScriptSource, java.lang.Class<?>...)call is required
- See Also:
 
- 
executeScript@Nullable protected Object executeScript(ScriptSource scriptSource, Class<?> scriptClass) throws ScriptCompilationException Instantiate the given Groovy script class and run it if necessary.- Parameters:
- scriptSource- the source for the underlying script
- scriptClass- the Groovy script class
- Returns:
- the result object (either an instance of the script class or the result of running the script instance)
- Throws:
- ScriptCompilationException- in case of instantiation failure
 
- 
toString
 
-