我有一个实现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实例化侦听器之前已完成上下文创建.