有什么方法可以从 Spock 扩展访问 Spring bean 吗?

Is there some way to get access to Spring bean from Spock extension?

有一个我想做的例子。 服务客户端是一个 Spring bean,它正在从外部配置中检索 class 并且应该从 Spock 扩展中调用。

class ServiceCleintExtension implements IGlobalExtension {

    @Autowired
    ServiceCLient client

    @Override
    void start() {
       client.execute()
    }

    ...
}

UPD: 我通过使用 Spring TestExecutionListener 和自定义静态 "container" 为 SpecInfo/FeatureInfo.

找到了解决方案

不,那是不可能的,IGlobalExtension 由 Spock 初始化和管理。此外,它们是单例,不能很好地适应多个可能的 Spring 上下文。

如果您只想在设置期间调用注入的 bean 上的方法,那么我建议使用基于注释的扩展。查看内置 AutoCleanup 扩展以供参考。