представлять
Spring ApplicationListener является частью механизма событий Spring в сочетании с абстрактным классом ApplicationEvent для завершения механизма уведомления о событиях ApplicationContext.
Слушатель событий ContextRefreshedEvent
Взяв в качестве примера встроенное в Spring событие ContextRefreshedEvent, когда ApplicationContext инициализируется или обновляется, будет инициировано событие ContextRefreshedEvent. Следующий пример кода:
@Component
public class LearnListener implements ApplicationListener<ContextRefreshedEvent> {
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
//获取所有的bean
String[] definitionNames = event.getApplicationContext().getBeanDefinitionNames();
for (String name : definitionNames) {
//打印名称
System.out.println("name = " + name);
}
}
}
пользовательское событие
код
//继承ApplicationEvent 抽象类就可以自定义事件模型
public class MyEvent extends ApplicationEvent {
private Long id;
private String message;
public MyEvent(Object source) {
super(source);
}
public MyEvent(Object source, Long id, String message) {
super(source);
this.id = id;
this.message = message;
}
//get set 方法省略
}
//实现ApplicationListener接口
@Component
public class MyListener implements ApplicationListener<MyEvent> {
@Override
public void onApplicationEvent(MyEvent event) {
System.out.println("监听到事件: "+event.getId()+"\t"+event.getMessage());
}
}
тестовое задание
@SpringBootTest
@RunWith(SpringRunner.class)
public class ListenerTest {
@Autowired
private ApplicationContext applicationContext;
@Test
public void testListenner() {
MyEvent myEvent = new MyEvent("myEvent", 9527L, "十二点了 该吃饭了~");
applicationContext.publishEvent(myEvent);
// System.out.println("发送结束");
}
}
результат
Ссылаться на:сегмент fault.com/ah/119000001…