spring – 将bean连接到实现IInvokedMethodListener的TestNG侦听器

我有一个实现IInvokedMethodListener的TestNG监听器.我想在这个监听器中连接一个
Spring bean并使用它.不幸的是,这个类是由TestNG实例化的,因此Spring无法连接任何使用@Autowired注释的内容.我尝试实现ApplicationContextAware,但这也不起作用.

有没有办法将Spring bean连接到实现IInvokedMethodListener的类?

最佳答案 ApplicationContextAware仅适用于Spring Beans.您可以使用
@Configurable,但这需要AspectJ.

这是一个应该工作的简单hack:将一个静态成员添加到监听器类并通过非静态setter注入它.

public class MyMethodListener implements IInvokedMethodListener {

   private static MyBean myBean;

   @Autowired
   public void setMyBean(MyBean myBean) {
        MyMethodListener.myBean = myBean;
   }
}

在应用程序上下文中包含所需类型的bean.

由TestNG实例化的侦听器与Spring上下文中的侦听器不是同一个实例,但它将具有静态成员集,前提是在TestNG实例化侦听器之前已完成上下文创建.

点赞