我有一个Spring驱动的应用程序,想要集成groovy。具体来说,我有一个抽象的Java类,其中包含一组抽象的方法定义,并且一个存储库已自动连接。

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

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

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


问题是我需要自动连接每个Groovy外部类中的存储库变量,但当前为null。

在运行时创建Groovy类时,该如何通知Groovy类以获取未存储的存储库变量?

谢谢!

编辑

Y已使用groovyObjectObject的setProperty方法通过以下方式解决了该问题:

groovyObject.setProperty("myRepository", myRepositoryImpl);

最佳答案

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

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

parsedClass.newInstance(repository:your_autowired_repo_ref)

09-15 22:50