• Springboot事件监听实例


    创建事件源

    package com.example.demo;
    
    import org.springframework.context.ApplicationEvent;
    import org.springframework.stereotype.Component;
    
    /**
     * @author lyd
     * @Description: 创建事件发布对象实体
     * @date 2021/6/1818:14
     */
    
    public class PushEvent extends ApplicationEvent {
    
    	private String msg;
    
    	public PushEvent(Object source, String msg) {
    		super(source);
    		this.msg = msg;
    	}
    
    	public String getMsg() {
    		return msg;
    	}
    
    	public void setMsg(String msg) {
    		this.msg = msg;
    	}
    }
    

    创建两个监听器

    package com.example.demo;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.context.event.EventListener;
    import org.springframework.stereotype.Service;
    
    /**
     * @author lyd
     * @Description: 监听者1
     * @date 2021/6/1818:16
     */
    @Slf4j
    @Service
    public class EventListenerOne {
    
    	@EventListener
    	public void enentListener(PushEvent pushEvent) {
    		log.info(this.getClass().getSimpleName() + "监听到数据:" + pushEvent.getMsg());
    	}
    
    
    }
    
    package com.example.demo;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.context.event.EventListener;
    import org.springframework.stereotype.Service;
    
    /**
     * @author lyd
     * @Description: 监听者2
     * @date 2021/6/1818:16
     */
    @Slf4j
    @Service
    public class EventListenerTwo {
    
    	@EventListener
    	public void enentListener(PushEvent pushEvent) {
    		log.info(this.getClass().getSimpleName() + "监听到数据:" + pushEvent.getMsg());
    	}
    
    
    }
    

    发布事件

    package com.example.demo;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.ApplicationEvent;
    import org.springframework.context.ApplicationEventPublisher;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    
    /**
     * @author lyd
     * @Description: 测试类
     * @date 2021/6/1818:31
     */
    @Slf4j
    @SpringBootApplication
    @RestController
    public class TestDemo {
    
    	@Autowired
    	private ApplicationEventPublisher  applicationEventPublisher;
    
    
    	@RequestMapping("publish")
    	public void publish() {
    
    		String msg = "哟哟";
    		log.info("发送哟哟:" + msg);
    
    		ApplicationEvent event = new PushEvent(this, msg);
    		applicationEventPublisher.publishEvent(event);
    
    	}
    
    
    }
    

    启动服务器,访问路径 http://localhost:8080/publish

  • 相关阅读:
    关于Android的振动控制器(Vibrator)报SecurityException异常的问题
    Db4o结合Linq、Lambda表达式的简单示例
    递归选取扩展方法(RecursionSelect)的新重载形式
    解决Adobe Illustrator CS5启动后自动关闭的问题
    趋势畅想搭载android系统的智能数码相机
    Android SurfaceView 绘图及帧频处理方法修正
    MVP 模式实例解析
    .Net 自定义应用程序配置
    C# 类型基础
    [译]开闭原则
  • 原文地址:https://www.cnblogs.com/lyd447113735/p/14915046.html
Copyright © 2020-2023  润新知