gpt4 book ai didi

java - 在运行时创建的外部groovy类中注入(inject)spring服务

转载 作者:行者123 更新时间:2023-12-01 13:31:11 25 4
gpt4 key购买 nike

我有一个 Spring 支持的应用程序,想要集成 Groovy。具体来说,我有一个抽象 java 类,其中包含一组抽象方法定义和一个使用 Autowiring 注入(inject)的存储库。

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

此时,我在java中调用Groovy类是这样的:

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

问题是我需要在每个 Groovy 外部类中 Autowiring 存储库变量,但当前为 null。

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

谢谢!

编辑

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

groovyObject.setProperty("myRepository", myRepositoryImpl);

最佳答案

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

但是,如果您可以将存储库 Autowiring 到生成groovyObject的类中,那么您可以在newInstance中手动注入(inject)存储库打电话。

parsedClass.newInstance(repository:your_autowired_repo_ref)

关于java - 在运行时创建的外部groovy类中注入(inject)spring服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21560503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com