在Java中,事件监听机制是通过注册监听器来响应事件的发生。事件源对象(event source)发生特定事件时,调用注册的监听器(event listener)中的相应方法。平时的开发中也经常会用到。
1.定义我们的事件类 CustomEvent :
import org.springframework.context.ApplicationEvent;
public class CustomEvent extends ApplicationEvent {
private String message;
public CustomEvent(Object source, String message) {
super(source);
this.message = message;
}
public String getMessage() {
return message;
}
}
2.定义事件监听 CustomEventListener :
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
@Component
public class CustomEventListener {
@EventListener
public void handleCustomEvent(CustomEvent event) {
//这里根据自己的业务场景,实现对应的业务逻辑
System.out.println("Received custom event - " + event.getMessage());
}
}
3.事件发布类 CustomEventPublisher:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
@Service
public class CustomEventPublisher{
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
public void publishEvent(String message) {
CustomEvent customEvent = new CustomEvent(this, message);
applicationEventPublisher.publishEvent(customEvent);
}
}
4.测试
@RestController
public class ListenerController {
@Autowired
private CustomEventPublisher customEventPublisher;
@GetMapping("/testListener")
public String triggerEvent(@RequestParam String message) {
customEventPublisher.publishEvent(message);
return "Event triggered!";
}
}