public class StandardScriptFactory extends java.lang.Object implements ScriptFactory, BeanClassLoaderAware
ScriptFactory の実装(Java 6+ に含まれています)。JavaScript、Groovy、JRuby およびその他の JSR-223 準拠のエンジンをサポートします。 通常、ScriptFactoryPostProcessor と組み合わせて使用されます。設定例については、後者の javadoc を参照してください。
ScriptFactoryPostProcessor| コンストラクターと説明 |
|---|
StandardScriptFactory(java.lang.String scriptSourceLocator) 指定されたスクリプトソースの新しい StandardScriptFactory を作成します。 |
StandardScriptFactory(java.lang.String scriptSourceLocator, java.lang.Class<?>... scriptInterfaces) 指定されたスクリプトソースの新しい StandardScriptFactory を作成します。 |
StandardScriptFactory(java.lang.String scriptEngineName, java.lang.String scriptSourceLocator) 指定されたスクリプトソースの新しい StandardScriptFactory を作成します。 |
StandardScriptFactory(java.lang.String scriptEngineName, java.lang.String scriptSourceLocator, java.lang.Class<?>... scriptInterfaces) 指定されたスクリプトソースの新しい StandardScriptFactory を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected java.lang.Object | adaptToInterfaces(java.lang.Object script, ScriptSource scriptSource, java.lang.Class<?>... actualInterfaces) |
protected java.lang.Object | evaluateScript(ScriptSource scriptSource) |
java.lang.Object | getScriptedObject(ScriptSource scriptSource, java.lang.Class<?>... actualInterfaces)JSR-223 の ScriptEngine を介してスクリプトをロードして解析します。 |
java.lang.Class<?> | getScriptedObjectType(ScriptSource scriptSource) スクリプト Java オブジェクトの型を判別します。 |
java.lang.Class<?>[] | getScriptInterfaces() スクリプトが実装することになっているビジネスインターフェースを返します。 |
java.lang.String | getScriptSourceLocator() スクリプトのソースを指すロケーターを返します。 |
boolean | requiresConfigInterface() スクリプトが構成インターフェースを生成する必要があるかどうかを返します。 |
boolean | requiresScriptedObjectRefresh(ScriptSource scriptSource) リフレッシュが必要かどうかを判断します(例: |
protected javax.script.ScriptEngine | retrieveScriptEngine(ScriptSource scriptSource) |
void | setBeanClassLoader(java.lang.ClassLoader classLoader)Bean class loader を Bean インスタンスに提供するコールバック。 |
java.lang.String | toString() |
public StandardScriptFactory(java.lang.String scriptSourceLocator)
scriptSourceLocator - スクリプトのソースを指すロケーター。実際にスクリプトを作成するポストプロセッサーによって解釈されます。public StandardScriptFactory(java.lang.String scriptSourceLocator,
java.lang.Class<?>... scriptInterfaces)scriptSourceLocator - スクリプトのソースを指すロケーター。実際にスクリプトを作成するポストプロセッサーによって解釈されます。scriptInterfaces - スクリプトオブジェクトが実装することになっている Java インターフェース public StandardScriptFactory(java.lang.String scriptEngineName,
java.lang.String scriptSourceLocator)scriptEngineName - 使用する JSR-223 ScriptEngine の名前 (スクリプトソースから推論される代わりに明示的に与えられる)scriptSourceLocator - スクリプトのソースを指すロケーター。実際にスクリプトを作成するポストプロセッサーによって解釈されます。public StandardScriptFactory(@Nullable java.lang.String scriptEngineName, java.lang.String scriptSourceLocator, @Nullable java.lang.Class<?>... scriptInterfaces)
scriptEngineName - 使用する JSR-223 ScriptEngine の名前 (スクリプトソースから推論される代わりに明示的に与えられる)scriptSourceLocator - スクリプトのソースを指すロケーター。実際にスクリプトを作成するポストプロセッサーによって解釈されます。scriptInterfaces - スクリプトオブジェクトが実装することになっている Java インターフェース public void setBeanClassLoader(java.lang.ClassLoader classLoader)
BeanClassLoaderAwareclass loader を Bean インスタンスに提供するコールバック。 通常の Bean プロパティの設定後、ただし InitializingBean's InitializingBean.afterPropertiesSet() メソッドやカスタム init-method などの初期化コールバックの前に呼び出されます。
BeanClassLoaderAware 内の setBeanClassLoader classLoader - 所有クラスローダー public java.lang.String getScriptSourceLocator()
ScriptFactoryサポートされている一般的なロケータは、Spring リソースの場所 ( "file:C:/myScript.bsh"" や "classpath:myPackage/myScript.bsh" など) とインラインスクリプト ( "inline:myScriptText..." ) です。
ScriptFactory 内の getScriptSourceLocator ScriptFactoryPostProcessor.convertToScriptSource(java.lang.String, java.lang.String, org.springframework.core.io.ResourceLoader), ResourceLoader@Nullable public java.lang.Class<?>[] getScriptInterfaces()
ScriptFactory スクリプト自体がその Java インターフェースを決定する場合(Groovy の場合など)、null を返すことができます。
ScriptFactory 内の getScriptInterfaces public boolean requiresConfigInterface()
ScriptFactorygetScriptInterfaces() で適切な構成インターフェースが指定されておらず、Java 署名自体を決定しないスクリプトの場合です。ScriptFactory 内の requiresConfigInterface ScriptFactory.getScriptInterfaces()@Nullable public java.lang.Object getScriptedObject(ScriptSource scriptSource, @Nullable java.lang.Class<?>... actualInterfaces) throws java.io.IOException, ScriptCompilationException
ScriptFactory 内の getScriptedObject scriptSource - スクリプトソーステキストを取得する実際の ScriptSource (非 null)actualInterfaces - スクリプトインターフェースと生成された設定インターフェースを含む、公開する実際のインターフェース (該当する場合 ; null の可能性があります)java.io.IOException - スクリプトの取得に失敗した場合 ScriptCompilationException - スクリプトのコンパイルが失敗した場合 protected java.lang.Object evaluateScript(ScriptSource scriptSource)
@Nullable protected javax.script.ScriptEngine retrieveScriptEngine(ScriptSource scriptSource)
@Nullable protected java.lang.Object adaptToInterfaces(@Nullable java.lang.Object script, ScriptSource scriptSource, java.lang.Class<?>... actualInterfaces)
@Nullable public java.lang.Class<?> getScriptedObjectType(ScriptSource scriptSource) throws java.io.IOException, ScriptCompilationException
ScriptFactory実装では、生成されたスクリプトクラスなどのスクリプトメタデータをキャッシュすることをお勧めします。このメソッドは同時に呼び出すことができ、スレッドセーフな方法で実装する必要があることに注意してください。
ScriptFactory 内の getScriptedObjectType scriptSource - スクリプトソーステキストを取得する実際の ScriptSource (非 null)null java.io.IOException - スクリプトの取得に失敗した場合 ScriptCompilationException - スクリプトのコンパイルが失敗した場合 public boolean requiresScriptedObjectRefresh(ScriptSource scriptSource)
ScriptFactoryisModified() メソッドなどを使用)。ScriptFactory 内の requiresScriptedObjectRefresh scriptSource - スクリプトソーステキストを取得する実際の ScriptSource (非 null)ScriptFactory.getScriptedObject(org.springframework.scripting.ScriptSource, java.lang.Class<?>...) 呼び出しが必要かどうか ScriptSource.isModified()public java.lang.String toString()
java.lang.Object の toString