我有一个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外部类中自动装入存储库变量,但目前是null。
当我在运行时创建它时,如何通知Groovy类获取隐藏的存储库变量?
谢谢!
修改
Y使用groovyObjectObject中的setProperty方法解决了这个问题:
groovyObject.setProperty("myRepository", myRepositoryImpl);
答案 0 :(得分:1)
此处的实例不是由spring创建的,因此我不认为spring可以在groovyObject
中自动设置存储库实例。
但是,如果您可以autowire
将存储库导入到生成groovyObject
的类中,那么您可以在newInstance
调用中手动注入存储库。
parsedClass.newInstance(repository:your_autowired_repo_ref)
答案 1 :(得分:0)
我已经使用groovyObjectObject中的setProperty方法解决了这个问题:
groovyObject.setProperty("myRepository", myRepositoryImpl);