编写SpringApplication,并触发事件
@SpringBootApplication
public class PublishAndListenerApplication {
public static void main(String[] args) throws IOException {
ConfigurableApplicationContext context = SpringApplication.run(PublishAndListenerApplication.class, args);
// 调用注册
context.getBean(PublishComponent.class).register();
}
}
事件类
public class RegisteredEvent extends ApplicationEvent {
/**
* 验证码
*/
private String code;
public RegisteredEvent(Object source) {
super(source);
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
事件发布Bean
@Component
public class PublishComponent {
@Autowired
private ApplicationContext context;
public void register() {
RegisteredEvent registeredEvent = new RegisteredEvent(this);
registeredEvent.setCode("666");
System.out.println("需要发送的验证码为->"+ registeredEvent.getCode());
context.publishEvent(registeredEvent);
System.out.println("用户注册完成发->布注册完成事件");
}
}
事件监听
@Component
public class ListenerComponent {
@EventListener
public void sentEmail(RegisteredEvent event) {
System.out.println("邮件发送监听器->监听到注册事件");
System.out.println("验证码为->"+event.getCode());
System.out.println("执行->发送注册短信");
}
}
启动程序
需要发送的验证码为->666
邮件发送监听器->监听到注册事件
验证码为->666
执行->发送注册短信
用户注册完成发->布注册完成事件
评论区