Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot Spring事件侦听器_Spring Boot_Java 11 - Fatal编程技术网

Spring boot Spring事件侦听器

Spring boot Spring事件侦听器,spring-boot,java-11,Spring Boot,Java 11,我正在使用spring ApplicationEventPublisher发布事件 发布和发布的方法 @Autowired private ApplicationEventPublisher eventPublisher; private void publishContributorUpdate(long contributorId, boolean isOwner){ var upe = new DeactivateContributorEvent(this); up

我正在使用spring ApplicationEventPublisher发布事件

发布和发布的方法

 @Autowired
private ApplicationEventPublisher eventPublisher; 

 private void publishContributorUpdate(long contributorId, boolean isOwner){
    var upe = new DeactivateContributorEvent(this);
    upe.setContributorId(contributorId);
    upe.setOwner(isOwner);

    eventPublisher.publishEvent(upe);
}
事件类别:

public class DeactivateContributorEvent extends ApplicationEvent 
听众来了

  @Component
  public class ContributorDeactivateEventListener  {

@Autowired
private ContributorDao contributorDao;

@EventListener
public void onContributorDeactivation(final DeactivateContributorEvent event) {


        contributorDao.updateContributor(event.getContributorId(),event.isOwner(),false);
}
}

所以,这件事是我看过但没有读过的。原因可能是什么?我正在使用spring boot 2.1.3

我看到的一切看起来都正常。您能告诉我们更多有关如何创建
eventPublisher
的信息吗?我还要确保您的
ContributorDeactivateEventListener
类实际上正在被扫描和实例化。您可以向它添加一个构造函数并在该构造函数中放置一个断点,或者添加一个日志调用或“printf”,以知道Spring正在查看它。(顺便说一句,我假设当你说“不读”时,你的意思是永远不会调用
onContributorDeactivation
。@steve说得对。onContributorDeactivation方法没有被调用。你明白我的建议吗?我想知道是否正在创建您的
ContributorDeactivateEventListener
对象。我的猜测是,它不是,因为如果它是,那么春天应该叫它可能Spring在启动时没有扫描该文件/类。这是我能想到的最好的解释。似乎唯一的其他解释是,
eventPublisher
在某种程度上做得不对。但是,既然在调用NPE异常时没有得到它,那么它一定在那里,我想不出如何设置它不调用您的
contributor或deactivateEventListener
类。你必须做一些奇怪的设置,让它不工作。这种机制在春天非常简单所以我猜Spring没有扫描您的
ContributorDeactivateEventListener
类以查找注释。我想您已经在日志中查找了与此相关的错误。如果你没有,那将是一件很棒的事情,以防日志中有答案。我看到的一切看起来都很好。您能告诉我们更多有关如何创建
eventPublisher
的信息吗?我还要确保您的
ContributorDeactivateEventListener
类实际上正在被扫描和实例化。您可以向它添加一个构造函数并在该构造函数中放置一个断点,或者添加一个日志调用或“printf”,以知道Spring正在查看它。(顺便说一句,我假设当你说“不读”时,你的意思是永远不会调用
onContributorDeactivation
。@steve说得对。onContributorDeactivation方法没有被调用。你明白我的建议吗?我想知道是否正在创建您的
ContributorDeactivateEventListener
对象。我的猜测是,它不是,因为如果它是,那么春天应该叫它可能Spring在启动时没有扫描该文件/类。这是我能想到的最好的解释。似乎唯一的其他解释是,
eventPublisher
在某种程度上做得不对。但是,既然在调用NPE异常时没有得到它,那么它一定在那里,我想不出如何设置它不调用您的
contributor或deactivateEventListener
类。你必须做一些奇怪的设置,让它不工作。这种机制在春天非常简单所以我猜Spring没有扫描您的
ContributorDeactivateEventListener
类以查找注释。我想您已经在日志中查找了与此相关的错误。如果你没有,那将是一件很好的事情,以防日志中有答案。