安装
warning
由于当前版本试用阶段,未注册到中央仓库,所以目前只等通过源码maven 打包本地使用。
普通项目
通过此方式安装运行,您将可以将Qiqb-Framework集成到任何项目中。
依赖
- Maven
<dependency>
<groupId>net.qiqbframework</groupId>
<artifactId>qiqb-core</artifactId>
<version>${lastVersion}</version>
</dependency>
配置并启动
Configurer 声明所有必要的材料(命令类型、聚会根类型、加载处理器、持久处理器、事件处理器),一般在项目启动后执行一次即可。
// ... existing code ...
Configurer configurer = DefaultConfigurer.defaultConfiguration();
// 注册聚合根定义
configurer.aggregateConfigurer().registerAggregateRootTypeBuilder(c -> User.class);
// 注册用户加载器
configurer.loadConfigurer().registerLoadHandlerBuilder(c -> userPersist);
// 注册用户持久处理器
configurer.persistenceConfigurer().registerPersistenceHandlerBuilder(c -> userPersist);
// 注册所有命令类型
configurer.commandConfigurer().registerAggregateCommandType(c -> UserRegisterCmd.class);
// ...
Configuration configuration = configurer.buildConfiguration();
configuration.start();
// ... existing code ...
Configurer定义好所有材料后,需创建一个 Configuration对象并启动,此时框架已完成的初始化。
接下来我们看看怎么使用吧。。。
理论上可在一个项目中存在多个
Configuration,并可以做到完全隔离。
获取命令网关
命令网关是我们开发最常用的对象。可以通过CommandGateway对象来处理命令。
// ... existing code ...
CommandGateway commandGateway = configuration.commandGateway();
// ... existing code ...
执行命令
// ... existing code ...
UserRegisterCmd userRegisterCmd = new UserRegisterCmd(userName);
commandGateway.sendAndWait(userRegisterCmd);
// ... existing code ...
Spring 项目
Springboot/Spring已然是Java项目中的标配,Qiqb-Framework同样很方便的集成到spring boot 环境。
- Maven
<dependency>
<groupId>net.qiqbframework</groupId>
<artifactId>qiqb-spring-boot-starter</artifactId>
<version>${lastVersion}</version>
</dependency>
spring boot 环境中,Qiqb-Framework提供了默认配置,启动时将自动扫描收集感兴趣的类或者对象(方法),您将无需手动注册。
命令网关直接通过spring容器依赖。 如:
// ... existing code ...
@Autowired
CommandGateway commandGateway;
// ... existing code ...
Quarkus 项目
Qiqb-Framework提供 Quarkus 环境支持。
- Maven
<dependency>
<groupId>net.qiqbframework</groupId>
<artifactId>qiqb-quarkus</artifactId>
<version>${lastVersion}</version>
</dependency>
Quarkus 环境中,Qiqb-Framework提供了默认配置,编译的时候自动扫描收集感兴趣的类或者对象(方法),您将无需手动注册。
命令网关直接通过 Quarkus 容器依赖。 如:
// ... existing code ...
@Inject
CommandGateway commandGateway;
// ... existing code ...