2016-02-10 4 views
4

Я хочу, чтобы обрабатывать несколько событий в одном классе, вот мой пример:Spring @EventListener аннотации не работают

@Lazy(false) 
@Component 
public class EventListenerImpl { 

    @EventListener 
    public void handleContextRefreshedEvent(ContextRefreshedEvent event) { 
     LOGGER.log(event.getSource()); 
     ... 
    } 
} 

Однако этот метод не выполняется, когда мой запуске приложения.

В моей applicationContext.xml у меня есть:

<context:annotation-config/> 
<context:component-scan base-package="..."/> 

, который должен быть достаточно для @EventListener работать, в соответствии с документацией.

Старый способ реализации ApplicationListener<ContextRefreshedEvent> работает просто отлично.

Я использую Spring 4.2.4.RELEASE.

+0

у вас есть '<контекст: аннотация привод />' в вашем XML? – Jens

+0

@Jens Нет, но вместо этого у меня есть '', который должен быть достаточным в соответствии с документами: https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework /context/event/EventListener.html –

+0

переименовать вас в метод 'handleContextRefreshed', см. здесь: https://spring.io/blog/2015/02/11/better-application-events-in-spring-framework-4-2 – Jens

ответ

1

Хорошо, это остается для меня полной тайной. Держу пари, что это какое-то Wierd Maven/язь вопроса кэширования, но в любом случае это сработало для меня после нескольких перезагрузок:

@Lazy(false) 
@Component 
public class EventListenerImpl { 

    @EventListener 
    public void whatever(final ContextRefreshedEvent event) { 
     event.getSource(); 
    } 
} 
Смежные вопросы