2017-10-18 12 views
1

私はJavaで初心者です。私は、作業と処理コマンドのためだけにハンドラを設定します。この時点で私はExceptionNo handler was subscribed to command [com.capgemini.books.CreateBook]を受け取る。Axon 3が見つかりませんでした

@Configuration 
public class ControllerConfig { 
    @Bean 
    public CommandBus commandBus() { 
     return new SimpleCommandBus(); 
    } 
} 

public class CreateBookHandler { 
    public CreateBookHandler() { } 

    @CommandHandler 
    public void handle(CreateBook command) { 
     Book newBook = new Book(1001L, "anonymous", command.bookTitle()); 
    } 
} 

答えて

2

希望は私はあなたが春ブーツを通して、あなたのアプリケーションを実行しているし、あなたがaxon-spring-boot-starter依存性を使用していることを取ると、この:-)

のお手伝いをすることができます:

私のコードは次のようになります自動的にすべてが配線され、あなたが逃しているものが分かります。 CreateBookHandlerはSpring Beanではないため、Axonの自動配線設定ではBeanとして認識されず、したがって注釈付き機能が見つからない場合があります。

しかし、私は通常、私のコマンド処理機能を、自分のセットアップ内の別のコンポーネントではなく、集約に直接置きます。その理由は、コマンドは単一の集約の文脈の中でほとんどの時間ですから、集約自体がコマンドを処理するのはなぜですか?

これがあなたを助けてくれることを願っています!

+1

あなたは100%正しいです。私はマークハンドラをBeanとして忘れていました。多分私はこのテクノロジースタックの初心者です。忍耐と正確な答えをありがとうございます。 – gargi258

+0

問題はありませんが、私はこれを手伝ってくれてうれしいです! :-) – Steven

関連する問題