我有一个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)