1、代码结构
2、pom文件引入必要jar包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.3.RELEASE</version>
</dependency>
3、业务代码
- 配置类
@Configuration
@ComponentScan("com.qing.zhao.event")
public class EventConfigration {
}
- 自定义事件类
public class MyEvent extends ApplicationEvent {
public MyEvent(Object source, String message) {
super(source);
System.out.println("自定义事件:"+message+": "+source);
}
}
- 监听类
@Component
public class MyEventListener implements ApplicationListener<ApplicationEvent> {
/**
* 当容器中发布ApplicationEvent事件时,该方法就会被触发
* @param applicationEvent
*/
@Override
public void onApplicationEvent(ApplicationEvent applicationEvent) {
//省略相关业务处理逻辑
if (applicationEvent instanceof MyEvent){
System.out.println("我监听到了自定义事件:"+applicationEvent.getSource());
}else {
System.out.println("我监听都了Spring默认事件"+applicationEvent.getSource());
}
}
}
- 事件发布类
@Component
public class EventHandle {
@Autowired
private ApplicationContext applicationContext;
public void sendEvent(String message){
MyEvent myEvent = new MyEvent(this, message);
applicationContext.publishEvent(myEvent);
}
}
- 测试类
public class EventTest {
public static void main(String[] args) {
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(EventConfigration.class);
EventHandle eventHandle = applicationContext.getBean(EventHandle.class);
eventHandle.sendEvent("传参");
applicationContext.close();
}
}
4、运行结果