springboot 事件監聽(@EventListener實現)


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
接收到的消息爲:你好啊

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章