獲得一個默認(rèn)的配置是非常容易的:
Configuration config = DefaultConfigurer.defaultConfiguration().buildConfiguration();
這個配置為分發(fā)消息提供了在線程上處理消息犯建、分發(fā)它們的實現(xiàn)。顯然遮晚,這種配置不會很有用戏溺。你必須將你的命令模型對象和事件處理器注冊到該配置中渣蜗。
為此,通過.defaultConfiguration()方法返回配置實例。
Configurer configurer = DefaultConfigurer.defaultConfiguration();
配置提供了多種允許你注冊這些組件的方法旷祸。在每個組件的相應(yīng)章節(jié)有如何配置這些組件的詳細(xì)描述袍睡。
組件一般形式的注冊,如下:
Configurer configurer = DefaultConfigurer.defaultConfiguration();
configurer.registerCommandHandler(c -> doCreateComponent());
注意registerCommandBus中l(wèi)ambda表達(dá)式的調(diào)用。這個表達(dá)式的參數(shù)c是描述完整配置的配置對象肋僧。如果組件需要其他組件正常運行,則可以使用此配置來檢索它們控淡。
例如,注冊一個需要序列化器的命令處理程序
configurer.registerCommandHandler(c -> new MyCommandHandler(c.serializer());
不是所有的組件都有其明確的accesor方法嫌吠。檢索一個配置中的組件,使用:
configurer.registerCommandHandler(c -> new MyCommandHandler(c.getComponent(MyOtherComp
onent.class));
該組件必須和配置一起注冊,使用
configurer.registerComponent(componentType, builderFunction) .builder函數(shù)將接受配置對象作為輸入?yún)?shù)。
使用Spring設(shè)置配置
使用Spring時,不需要顯式地使用配置掺炭。相反,你可以簡單地把@EnableAxon設(shè)置到一個Spring @configuration類上辫诅。
Axon將使用Spring應(yīng)用程序上下文來定位構(gòu)件的特定實現(xiàn),并為那些不存在的提供默認(rèn)值涧狮。因此,取代在配置中注冊構(gòu)件,你只需要在Spring應(yīng)用程序上下文中讓@Bean可用即可炕矮。