原理参考ImportBeanDefinitionRegistrar+SPI简化Spring开发
guava EventBus是一个进程内事件总线,可以看做是消息队列的进程内版本,用作进程内解耦、通知、异步处理等。网上有很多对其介绍的。
com.alpha.coding.common.event这个package下是对guava EventBus的二次封装,方便在spring框架下使用,结合spring AOP机制,在切点拦截组装事件发布,通知对应的Listener处理。一个比较重要的概念是事件分类标识,每一个标识代表一类事件,用一个枚举类来描述子类。
public interface EventIdentifier {
/**
* 身份标识
*/
Class<? extends EnumWithCodeSupplier> getIdentity();
}
如缓存更新事件:
@Getter
@AllArgsConstructor
public enum CacheEventType implements EnumWithCodeSupplier {
DATA_A_CHANGE(1, "数据A更新"),
;
private int type;
private String desc;
@Override
public Supplier codeSupply() {
return () -> this.type;
}
}
定义好对应事件的Handler:
@Slf4j
@Component
public class DataAChangeEventHandler
extends CallbackEventHandlerTemplate<Object, CacheEventType, CacheEventErrorType> {
@Override
public List<? extends AbstractEventHandleResult<Object, CacheEventErrorType>> handleWithStrategy(Set<Object

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



