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

Spring 将bean连接到实现IInvokedMethodListener的TestNG侦听器,spring,testng,spring-3,Spring,Testng,Spring 3,我有一个TestNG监听器,它实现了IInvokedMethodListener。我想在这个监听器中连接一个Springbean并使用它。不幸的是,这个类是由TestNG实例化的,因此Spring无法连接使用@Autowired注释的任何内容。我尝试实现了ApplicationContextAware,但也不起作用 是否有一种方法可以将SpringBean连接到实现IInvokedMethodListener的类中?ApplicationContextAware仅适用于SpringBean。您可

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


是否有一种方法可以将SpringBean连接到实现
IInvokedMethodListener
的类中?

ApplicationContextAware
仅适用于SpringBean。您可以使用,但这需要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实例化侦听器之前已经完成了上下文创建。

我最近遇到了同样的问题,这是因为Spring没有维护侦听器。所以我在谷歌上搜索了一下这个概念,比如“将bean注入到非spring管理的类中”,我得到了一个链接,它解释了完全相同的问题和解决方案。这对我有用