Groovy スクリプトを実行する Spring Controlled Grovoy Script Executor クラスがあります。
以下のようなもの
final ClassLoader parent = getClass().getClassLoader();
final GroovyClassLoader loader;
loader = AccessController.doPrivileged(new PrivilegedAction<GroovyClassLoader>() {
@Override
public GroovyClassLoader run() {
return new GroovyClassLoader(parent);
}
});
this.groovyClass = loader.parseClass(" def returnSomthing() { return SpringControlledBean.action('Hello World') } ");
final GroovyObject groovyObject = (GroovyObject) this.groovyClass.newInstance();
final Object[] args = { };
final Object result = groovyObject.invokeMethod("returnSomthing", args);
SpringControlledBeanをスクリプトに挿入することは可能ですか? おそらく自動配線を介して、またはSpringにクラスを作成させて、スクリプトが変更されるとクラスを再作成する必要があることを理解しますか?
クラスがクラスパスの一部であり、Java でビルドされた場合、Autowire は可能ですが、このスクリプトの内容は実行時に過去のものであるため、Spring が知るには静的ではありません。