2
我有一個執行Groovy腳本的Spring Controlled Grovoy腳本執行器類。Spring Inject/AutoWire在運行時創建的Groovy類
類似下面
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而言這不是靜態的。
這適用於Groovy類,但對於一個普通的Groovy腳本(與高清功能),這是行不通的。 Autowired需要是一個字段或方法/構造函數。也許有修改groovy類文件生成的情況。 – Ben 2013-02-21 15:17:58
是的,沒有什麼可以爲普通腳本進行連線。你可以在接線/執行之前用所有必需的東西包裝它 – 2013-02-21 15:23:46