一、
定义一个事件源
@Setter
@Getter
public class ZgxEvent implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private String name;
@Override
public String toString() {
return ReflectionToStringBuilder.toString(this, ToStringStyle.SHORT_PREFIX_STYLE);
}
}
定义相应的事件处理器
/**
* @author zhangGX
* @date 2021-01-13 11:26
*/
@EventHandler
public class ZgxEventHandle {
// 异步事件处理器
@Handler(delivery = Invoke.Asynchronously)
public void handleZgxEventAsyn(ZgxEvent event) {
}
}
在就是服务层以及服务实现层
/**
* @author zhangGX
* @date 2021-01-13 11:28
*/
@Service
public class ZgxServiceImpl implements ZgxService {
@Autowired
private ApplicationContext applicationContext;
@Override
public void sendZgx() {
ZgxEvent event = new ZgxEvent();
event.setName("世界上真的会有光么");
//EventBus 是公司封装的事件总类
EventBus eventBus = applicationContext.getBean(EventBus.class);
eventBus.publishAfterTransactionCommitted(event);
}
}
/**
* @author zhangGX
* @date 2021-01-13 11:28
*/
public interface ZgxService {
void sendZgx();
}
最后写一个测试方法调用
二、
//事件类
@Data
public class BlackListEvent extends ApplicationContextEvent {
private String address;
public BlackListEvent(ApplicationContext source,String address) {
super(source);
this.address = address;
}
}
//监听类
@Component
public class BlackListListener{
@EventListener
public void onApplicationEvent(BlackListEvent blackListEvent) {
System.out.println("监听到BlackListEvent事件: " + blackListEvent.getAddress());
}
}
//测试类
public void test1(){
BlackListEvent event = new BlackListEvent(publisher,"你好");
publisher.publishEvent(event);
System.out.println("事件发布成功");
}