我想使用轴突框架在Java中不使用spring的情况下设置处理命令并调度事件的聚合类。我已经在Spring Boot中使用@ Aggregate,@ CommandHandler之类的注释执行了该操作,但是如果没有spring则无法执行。
我使用了默认配置器对象和命令总线对象。我能够分派命令并在自定义处理程序中处理它,但我想在聚合中处理它并分派事件并在聚合中处理该事件。我知道在春季启动中启用了注释。
@Aggregate
public class PlayerAggregate{
@AggregateIdentifier
private String playerId;
public PlayerAggregate() {
}
@CommandHandler
public PlayerAggregate(CreatePlayerCommand createPlayerCommand){
AggregateLifecycle.apply(new PlayerCreatedEvent(createPlayerCommand.playerId ));
}
@EventSourcingHandler
protected void on(PlayerCreatedEvent playerCreatedEvent){
this.playerId = playerCreatedEvent.playerId;
System.out.println("event completed");
}
}
答案 0 :(得分:2)
您根本不需要使用Spring。
为了进行基础结构组件的配置并定义它们与每个功能组件的关系,Axon提供了Java Configuration API。
/* Axon configuration */
Configuration config = DefaultConfigurer.defaultConfiguration()
.configureAggregate(GiftCard.class)
// .configureEmbeddedEventStore(c -> new InMemoryEventStorageEngine())
.eventProcessing(ep -> ep.registerEventHandler(c -> new GiftCardEventHandler(c.queryUpdateEmitter(), querySideDBMap)))
.registerQueryHandler(c -> new GiftCardQueryHandler(querySideDBMap))
.start();
在此处查看完整的示例/演示项目:https://github.com/idugalic/axon-vanilla-java-demo