聊聊cheddar的DomainEvent

本文深入探讨了Cheddar框架中的DomainEvent组件,包括DomainEvent接口、AbstractDomainEvent抽象类以及DomainEventHandler和其优先级子接口。此外,还介绍了DomainEventPublisher类,它是EventPublisher的子类,负责发布DomainEvent。

本文主要研究一下cheddar的DomainEvent

DomainEvent

Cheddar/cheddar/cheddar-domain/src/main/java/com/clicktravel/cheddar/domain/event/DomainEvent.java

public interface DomainEvent extends Event {

}

DomainEvent接口继承了Event接口

AbstractDomainEvent

Cheddar/cheddar/cheddar-domain/src/main/java/com/clicktravel/cheddar/domain/event/AbstractDomainEvent.java

public abstract class AbstractDomainEvent extends AbstractEvent implements DomainEvent {

    public abstract String context();

    @Override
    public final String type() {
        return context() + "." + getClass().getSimpleName();
    }

}

AbstractDomainEvent继承了AbstractEvent,声明实现了DomainEvent接口,它声明了一个抽象的context方法

DomainEventHandler

Cheddar/cheddar/cheddar-domain/src/main/java/com/clicktravel/cheddar/domain/event/DomainEventHandler.java

public interface DomainEventHandler extends EventHandler<DomainEvent> {

}

public interface HighPriorityDomainEventHandler extends DomainEventHandler {

}

public interface LowPriorityDomainEventHandler extends DomainEventHandler {

}

DomainEventHandler接口继承了EventHandler接口,其泛型为DomainEvent;HighPriorityDomainEventHandler及LowPriorityDomainEventHandler接口继承了DomainEventHandler接口

DomainEventPublisher

Cheddar/cheddar/cheddar-domain/src/main/java/com/clicktravel/cheddar/domain/event/DomainEventPublisher.java

public class DomainEventPublisher extends EventPublisher<DomainEvent> {

    private static DomainEventPublisher instance;

    public static void init(final MessagePublisher<TypedMessage> messagePublisher) {
        instance = new DomainEventPublisher(messagePublisher);
    }

    private DomainEventPublisher(final MessagePublisher<TypedMessage> messagePublisher) {
        super(messagePublisher);
    }

    public static DomainEventPublisher instance() {
        if (instance == null) {
            throw new IllegalStateException("DomainEventPublisher not initialized");
        }
        return instance;
    }

}

DomainEventPublisher继承了EventPublisher,其构造器接收MessagePublisher;它提供了init方法用于创建DomainEventPublisher,instance方法用于获取instance

小结

cheddar定义了DomainEvent接口及AbstractDomainEvent抽象类;DomainEventHandler接口继承了EventHandler接口,其泛型为DomainEvent;DomainEventPublisher继承了EventPublisher,其构造器接收MessagePublisher,其publishEvent方法最后通过MessagePublisher的publish来实现。

doc

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值