【SpringBoot基础】事件监听 注解实现

内容概要

在spring注解环境中实现,事件监听实例。

环境jar包

	jdk: jdk1.8.0_121(32位)
	pom:
		 <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.10.RELEASE</version>
        </dependency>

文件结构

在这里插入图片描述

事件类 AppEvent

package Listener;

import org.springframework.context.ApplicationEvent;
//继承 事件监听类
public class AppEvent extends ApplicationEvent {
	//接收内容
    private String message;
	//获得 Source
    public AppEvent(Object source,String name) {
        super(source);
        this.message = name;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String dataSource) {
        this.message = dataSource;
    }
}

事件监听类 EventListener

package Listener;

import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
//组件注解
@Component  
//实现监听接口
public class EventListener implements ApplicationListener<AppEvent> {
	//监听处理
    public void onApplicationEvent(AppEvent event) {
        String  message = event.getMessage();
        System.out.println("收到消息:"+message);
    }
}

事件发布类 EventPublisher

package Listener;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

@Component //注解
public class EventPublisher {
    @Autowired //获取Spring容器
    private ApplicationContext context;
	//使用容器发布消息
    public void  publish(String message){
        context.publishEvent(new AppEvent(this,message));
    }
}

配置类EventConfig

package Listener;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
//配置类
@Configuration
@ComponentScan("Listener") //扫描Listener下的bean
public class EventConfig {
}

测试类 Main

package Listener;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {

    public static void main(String [] args){
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(EventConfig.class);
        EventPublisher eventPublisher = context.getBean(EventPublisher.class);
        eventPublisher.publish("有问题!");
        context.close();
    }
}

输出结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Shane_FZ_C/article/details/89020440