前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊cheddar的DomainEvent

聊聊cheddar的DomainEvent

作者头像
code4it
发布2021-04-16 13:14:39
2890
发布2021-04-16 13:14:39
举报
文章被收录于专栏:码匠的流水账

本文主要研究一下cheddar的DomainEvent

DomainEvent

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

代码语言:javascript
复制
public interface DomainEvent extends Event {

}

DomainEvent接口继承了Event接口

AbstractDomainEvent

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

  • Cheddar
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码匠的流水账 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DomainEvent
  • AbstractDomainEvent
  • DomainEventHandler
  • DomainEventPublisher
  • 小结
  • doc
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档