Skip to content

@EventListener does not work if put it at method in class that implements interface [SPR-13650] #18226

Closed
@spring-projects-issues

Description

@spring-projects-issues

Nazar Vishka opened SPR-13650 and commented

Simple example:

public interface Service{
      @org.springframework.context.event.EventListener
      void processEventA(EventA event);
      
      void processEventB(EventB event);
}

@Service
public class ServiceImpl implements Service{
     @Override
     public void void processEventA(EventA event){ 
          //do something 
     }

     @Override
     @org.springframework.context.event.EventListener
     public void void processEventB(EventB event){ 
          //do something 
     }

     @org.springframework.context.event.EventListener
     public void void processEventC(EventC event){ 
          //do something 
     }
}

@Service
public class EventPublisher{
       @Autowired
       ApplicationEventPublisher eventPublisher;

       public void publishEvents(){
             eventPublisher.publishEvent(new EventA());
             eventPublisher.publishEvent(new EventB());
             eventPublisher.publishEvent(new EventC());
       }
}

When I call EventPublisher.publishEvents() only one method in ServiceImpl is triggered: processEventA(EventA event). But I expected that all three methods will be triggered.


Affects: 4.2.2

Issue Links:

Referenced from: commits 90c9d96, d5efe4f

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions