在webapp(Java 8,Spring 4)中,我有一个Rabbit监听器类,我需要在处理程序方法完成执行时触发事件。
当我将此代码放入侦听器类时,会抛出NullPointerException,但是如果我将它放在@Controller或在“main”线程中运行的@Service,一切正常。我相信它与上下文或类似的东西有关。
public class MyListener {
@Autowired
private ApplicationEventPublisher publisher;
...
private void sendNotification() {
...
publisher.publishEvent(notificationEvent);
}
}
“publisher”对象不为null且“notificationEvent”不为null,(这不是基本错误)。
我正在调试spring-context.jar源代码,异常被抛出一个名为“Method”的反射类,
// java.lang.reflect.Method, line 483
return ma.invoke(obj, args);
正如我所说的,如果我把这段代码放在“主线程”中运行的Controller或Service中,一切都还可以,但是当我把它放在Rabbit类Listener中时,我得到了这个错误。
<bean id="myListener" class="com.example.MyListener />
<rabbit:listener-container connection-factory="connectionFactory" error-handler="queueErrorHandler" >
<rabbit:listener ref="myListener" method="handleMethod" queue-names="myQueue" />
</rabbit:listener-container>
我认为这与执行上下文有关,但我不知道可能是什么