0

我有一个 Spring 驱动的应用程序并且想要集成 groovy。具体来说,我有一个带有一组抽象方法定义的抽象 java 类和一个使用自动装配的存储库。

这个类必须由几个最终的 groovy 外部类(每个客户端一个)来实现。

此时,我以这种方式在 java 中调用 Groovy 类:

final Class parsedClass = groovyClassLoader.parseClass(groovyFile);
final GroovyObject groovyObject = (GroovyObject) parsedClass.newInstance();
final Object response = groovyObject.invokeMethod(methodName, methodParameters);

问题是我需要在每个 Groovy 外部类中自动装配存储库变量,但目前为空。

当我在运行时创建它时,如何通知 Groovy 类以获取 inyected 存储库变量?

谢谢!

编辑

Y 已经使用 groovyObjectObject 的 setProperty 方法解决了这个问题:

groovyObject.setProperty("myRepository", myRepositoryImpl);
4

2 回答 2

1

这里的实例不是由 spring 创建的,因此我认为 spring 不能自动设置存储库的实例groovyObject

但是,如果您可以autowire将存储库存储到生成的类中,那么您可以在调用groovyObject中手动注入存储库。newInstance

parsedClass.newInstance(repository:your_autowired_repo_ref)

于 2014-02-04T18:59:08.633 回答
0

我已经使用 groovyObjectObject 的 setProperty 方法解决了这个问题:

groovyObject.setProperty("myRepository", myRepositoryImpl);
于 2014-02-04T21:34:12.230 回答