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、運行結果