【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();
}
}