如何配置聚合类来处理命令和分派事件,而不使用java中的spring和axon框架?

如何配置聚合类来处理命令和分派事件,而不使用java中的spring和axon框架?,java,event-sourcing,axon,Java,Event Sourcing,Axon,我想在java中使用axon框架,在不使用spring的情况下,设置一个聚合类来处理命令和分派事件。我使用诸如@Aggregate、@CommandHandler之类的注释在spring引导下执行了它,但没有spring就无法执行 我使用了默认的配置器对象和命令总线对象。我能够调度命令并在自定义处理程序中处理它,但我希望在聚合中处理它,并在聚合中调度事件并处理该事件。我知道在spring boot中启用了注释 @Aggregate public class PlayerAggregate{

我想在java中使用axon框架,在不使用spring的情况下,设置一个聚合类来处理命令和分派事件。我使用诸如@Aggregate、@CommandHandler之类的注释在spring引导下执行了它,但没有spring就无法执行

我使用了默认的配置器对象和命令总线对象。我能够调度命令并在自定义处理程序中处理它,但我希望在聚合中处理它,并在聚合中调度事件并处理该事件。我知道在spring boot中启用了注释

@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");
    }
}

您根本不必使用Spring

为了配置基础设施组件并定义它们与每个功能组件的关系,Axon提供了Java配置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();

在这里查看完整的示例/演示项目:

谢谢@Ivan。它工作正常,但在事件完成后,应用程序继续运行。如果事件处理完成,如何终止应用程序。嗨@AkashJadhav,这只是Axon配置API的一个简单演示。您可以通过在main()方法的末尾追加这两行来关闭Axon配置并退出:
config.shutdown();系统出口(0)
Axon计划在
config.shutdown()中实现优雅的关机