public class GroovyScriptFactory extends ObjectSE implements ScriptFactory, BeanFactoryAware, BeanClassLoaderAware
ScriptFactory
実装。 通常、ScriptFactoryPostProcessor
と組み合わせて使用されます。設定例については、後者の javadoc を参照してください。
メモ: Spring 4.0 は Groovy 1.8 以降をサポートしています。
GroovyClassLoader
, ScriptFactoryPostProcessor
コンストラクターと説明 |
---|
GroovyScriptFactory(StringSE scriptSourceLocator) 指定されたスクリプトソースの新しい GroovyScriptFactory を作成します。 |
GroovyScriptFactory(StringSE scriptSourceLocator, org.codehaus.groovy.control.customizers.CompilationCustomizer... compilationCustomizers) 基になる GroovyClassLoader 内の Groovy のコンパイルプロセスをカスタマイズできる戦略インターフェースを指定して、指定されたスクリプトソースの新しい GroovyScriptFactory を作成します。 |
GroovyScriptFactory(StringSE scriptSourceLocator, org.codehaus.groovy.control.CompilerConfiguration compilerConfiguration) 指定されたスクリプトソースの新しい GroovyScriptFactory を作成します。カスタム MetaClass を作成して不足しているメソッドを提供したり、オブジェクトの動作を変更したりできるストラテジーインターフェースを指定します。 |
GroovyScriptFactory(StringSE scriptSourceLocator, GroovyObjectCustomizer groovyObjectCustomizer) 指定されたスクリプトソースの新しい GroovyScriptFactory を作成します。カスタム MetaClass を作成して不足しているメソッドを提供したり、オブジェクトの動作を変更したりできるストラテジーインターフェースを指定します。 |
修飾子と型 | メソッドと説明 |
---|---|
protected groovy.lang.GroovyClassLoader | buildGroovyClassLoader(ClassLoaderSE classLoader) 指定された ClassLoader の GroovyClassLoader を構築します。 |
protected ObjectSE | executeScript(ScriptSource scriptSource, ClassSE<?> scriptClass) 指定された Groovy スクリプトクラスをインスタンス化し、必要に応じて実行します。 |
groovy.lang.GroovyClassLoader | getGroovyClassLoader() このスクリプトファクトリで使用される GroovyClassLoader を返します。 |
ObjectSE | getScriptedObject(ScriptSource scriptSource, ClassSE<?>... actualInterfaces) GroovyClassLoader を介して Groovy スクリプトをロードして解析します。 |
ClassSE<?> | getScriptedObjectType(ScriptSource scriptSource) スクリプト Java オブジェクトの型を判別します。 |
ClassSE<?>[] | getScriptInterfaces() Groovy スクリプトはインターフェース自体を決定するため、ここでインターフェースを明示的に公開する必要はありません。 |
StringSE | getScriptSourceLocator() スクリプトのソースを指すロケーターを返します。 |
boolean | requiresConfigInterface() Groovy スクリプトは、setter を public メソッドとして公開するため、構成インターフェースは必要ありません。 |
boolean | requiresScriptedObjectRefresh(ScriptSource scriptSource) リフレッシュが必要かどうかを判断します(例: |
void | setBeanClassLoader(ClassLoaderSE classLoader) Bean class loader SE を Bean インスタンスに提供するコールバック。 |
void | setBeanFactory(BeanFactory beanFactory) 所有ファクトリを Bean インスタンスに提供するコールバック。 |
StringSE | toString() |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
public GroovyScriptFactory(StringSE scriptSourceLocator)
Groovy スクリプトはその Java インターフェース自体を定義するため、ここではスクリプトインターフェースを指定する必要はありません。
scriptSourceLocator
- スクリプトのソースを指すロケーター。実際にスクリプトを作成するポストプロセッサーによって解釈されます。public GroovyScriptFactory(StringSE scriptSourceLocator, @Nullable GroovyObjectCustomizer groovyObjectCustomizer)
scriptSourceLocator
- スクリプトのソースを指すロケーター。実際にスクリプトを作成するポストプロセッサーによって解釈されます。groovyObjectCustomizer
- カスタムメタクラスを設定したり、このファクトリによって作成された GroovyObject にその他の変更を加えたりできるカスタマイザ (null
の場合があります)GroovyObjectCustomizer.customize(groovy.lang.GroovyObject)
public GroovyScriptFactory(StringSE scriptSourceLocator, @Nullable org.codehaus.groovy.control.CompilerConfiguration compilerConfiguration)
scriptSourceLocator
- スクリプトのソースを指すロケーター。実際にスクリプトを作成するポストプロセッサーによって解釈されます。compilerConfiguration
- GroovyClassLoader に適用されるカスタムコンパイラー構成 (null
の場合があります)GroovyClassLoader(ClassLoader, CompilerConfiguration)
public GroovyScriptFactory(StringSE scriptSourceLocator, org.codehaus.groovy.control.customizers.CompilationCustomizer... compilationCustomizers)
scriptSourceLocator
- スクリプトのソースを指すロケーター。実際にスクリプトを作成するポストプロセッサーによって解釈されます。compilationCustomizers
- GroovyClassLoader コンパイラー構成に適用される 1 つ以上のカスタマイザ CompilerConfiguration.addCompilationCustomizers(org.codehaus.groovy.control.customizers.CompilationCustomizer...)
, ImportCustomizer
public void setBeanFactory(BeanFactory beanFactory)
BeanFactoryAware
通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet()
またはカスタム init-method などの初期化コールバックの前に呼び出されます。
BeanFactoryAware
の setBeanFactory
beanFactory
- 所有 BeanFactory(非 null
)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。BeanInitializationException
public void setBeanClassLoader(ClassLoaderSE classLoader)
BeanClassLoaderAware
class loader
SE を Bean インスタンスに提供するコールバック。 通常の Bean プロパティの設定後、ただし InitializingBean's
InitializingBean.afterPropertiesSet()
メソッドやカスタム init-method などの初期化コールバックの前に呼び出されます。
BeanClassLoaderAware
の setBeanClassLoader
classLoader
- 所有クラスローダー public groovy.lang.GroovyClassLoader getGroovyClassLoader()
protected groovy.lang.GroovyClassLoader buildGroovyClassLoader(@Nullable ClassLoaderSE classLoader)
ClassLoader
の GroovyClassLoader
を構築します。classLoader
- GroovyClassLoader を構築するための ClassLoaderpublic StringSE getScriptSourceLocator()
ScriptFactory
サポートされている一般的なロケータは、Spring リソースの場所 ( "file:C:/myScript.bsh"" や "classpath:myPackage/myScript.bsh" など) とインラインスクリプト ( "inline:myScriptText..." ) です。
@Nullable public ClassSE<?>[] getScriptInterfaces()
ScriptFactory
の getScriptInterfaces
null
は常に public boolean requiresConfigInterface()
ScriptFactory
の requiresConfigInterface
ScriptFactory.getScriptInterfaces()
@Nullable public ObjectSE getScriptedObject(ScriptSource scriptSource, @Nullable ClassSE<?>... actualInterfaces) throws IOExceptionSE, ScriptCompilationException
ScriptFactory
の getScriptedObject
scriptSource
- スクリプトソーステキストを取得する実際の ScriptSource (非 null
)actualInterfaces
- スクリプトインターフェースと生成された設定インターフェースを含む、公開する実際のインターフェース (該当する場合 ; null
の可能性があります)IOExceptionSE
- スクリプトの取得に失敗した場合 ScriptCompilationException
- スクリプトのコンパイルが失敗した場合 GroovyClassLoader
@Nullable public ClassSE<?> getScriptedObjectType(ScriptSource scriptSource) throws IOExceptionSE, ScriptCompilationException
ScriptFactory
実装では、生成されたスクリプトクラスなどのスクリプトメタデータをキャッシュすることをお勧めします。このメソッドは同時に呼び出すことができ、スレッドセーフな方法で実装する必要があることに注意してください。
ScriptFactory
の getScriptedObjectType
scriptSource
- スクリプトソーステキストを取得する実際の ScriptSource (非 null
)null
IOExceptionSE
- スクリプトの取得に失敗した場合 ScriptCompilationException
- スクリプトのコンパイルが失敗した場合 public boolean requiresScriptedObjectRefresh(ScriptSource scriptSource)
ScriptFactory
isModified()
メソッドなどを使用)。ScriptFactory
の requiresScriptedObjectRefresh
scriptSource
- スクリプトソーステキストを取得する実際の ScriptSource (非 null
)ScriptFactory.getScriptedObject(org.springframework.scripting.ScriptSource, java.lang.Class<?>...)
呼び出しが必要かどうか ScriptSource.isModified()
@Nullable protected ObjectSE executeScript(ScriptSource scriptSource, ClassSE<?> scriptClass) throws ScriptCompilationException
scriptSource
- 基本となるスクリプトのソース scriptClass
- Groovy スクリプトクラス ScriptCompilationException
- インスタンス化が失敗した場合 public StringSE toString()
ObjectSE
の toStringSE