事件对象:
MailSendEvent.java
import org.springframework.context.ApplicationContext;
import org.springframework.context.event.ApplicationContextEvent;
//事件对象
public class MailSendEvent extends ApplicationContextEvent {
String to;
public MailSendEvent(ApplicationContext source,String to) {
super(source);
this.to = to;
}
public String getTo() {
return this.to;
}
}
监听器类:
MailSendListener.java
import com.example.demo.springListen.bean.MailSendEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
@Component
public class MailSendListener implements ApplicationListener<MailSendEvent> {
public void onApplicationEvent(MailSendEvent event) {
MailSendEvent mse = (MailSendEvent) event;
System.out.println("MailSendListener:向" + mse.getTo() + "发送完一封邮件");
}
}
发送:
MailSender.java
import com.example.demo.springListen.bean.MailSendEvent;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
@Component
public class MailSender implements ApplicationContextAware {
private ApplicationContext ctx ;
public void setApplicationContext(ApplicationContext ctx)
throws BeansException {
this.ctx = ctx;
}
public void sendMail(String to){
System.out.println("MailSender:模拟发送邮件...");
MailSendEvent mse = new MailSendEvent(this.ctx,to);
ctx.publishEvent(mse);
}
}
测试类:
@Autowired
MailSender mailSender;
@GetMapping("/test2")
public Object test2(){
mailSender.sendMail("test mail.");
System.out.println("done.");
return "success";
}
结果: