认识下applicationContext.publishEvent()的API,这是spring容器为用户准备好的调用方式。
@Component
public class EventComponent {
@EventListener
public void onApplicationEvent(Test1 test1) {
System.out.println("顾客:" + test1.getName() + "调用发送短信接口成功!");
}
}
主要是@EventListener注解,声明该方法为事件监听器。
接下来写controller:
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
private ApplicationContext applicationContext;
@GetMapping("/test1")
public void test() throws Exception{
Test1 test1 = new Test1();
test1.setName("张三");
applicationContext.publishEvent(test1);
}
}
实体类Test1专门用来识别相应事件监听器,当然可以配置多个事件监听器,他们的区别就是实体类不同。
如果有实体类相同的两个监听器,那么就属于订阅模式。
现在把第一块代码配置两个监听器:
@Component
public class EventComponent {
@EventListener
public void onApplicationEvent(Test1 test1) {
System.out.println("顾客1:" + test1.getName() + "调用发送短信接口成功!");
}
@EventListener
public void onApplicationEvent2(Test1 test1) {
System.out.println("顾客2:" + test1.getName() + "调用发送短信接口成功!");
}
}
运行结果:
张三调用了两个事件。