springboot 事件監聽(@EventListener實現)
應用:使用註解實現事件監聽
**********************
相關注解
@EventListener
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface EventListener {
@AliasFor("classes")
Class<?>[] value() default {}; //監聽的類
@AliasFor("value")
Class<?>[] classes() default {};
String condition() default "";
}
**********************
示例
*****************
event 層
CustomEvent
public class CustomEvent extends ApplicationEvent {
private String message;
public CustomEvent(Object source,String message){
super(source);
this.message=message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
CustomEventListener
@Component
public class CustomEventListener {
@EventListener(CustomEvent.class)
public void onApplicationEvent(CustomEvent customEvent){
System.out.println("監聽器接受消息:"+System.currentTimeMillis());
System.out.println("接收到的消息爲:"+customEvent.getMessage());
}
}
*****************
controller 層
HelloController
@RestController
public class HelloController {
@Resource
private ApplicationContext applicationContext;
@RequestMapping("/hello")
public String hello(){
System.out.println("事件開始發佈消息:"+System.currentTimeMillis());
applicationContext.publishEvent(new CustomEvent(this,"你好啊"));
return "success";
}
}
**********************
使用測試
localhost:8080/hello
2020-07-05 10:20:14.512 INFO 18472 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2020-07-05 10:20:14.517 INFO 18472 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 5 ms
事件開始發佈消息:1593915614552
監聽器接受消息:1593915614553
接收到的消息爲:你好啊