From 74db4d96fdf9f14e9029c351c2a3a040914ec351 Mon Sep 17 00:00:00 2001 From: Andrea Ratto Date: Sat, 24 Sep 2016 13:47:31 +0200 Subject: [PATCH] Improve autoconfiguration sample --- .../quickstart/AxonSpringConfiguration.java | 39 ++++--------------- .../quickstart/annotated/ToDoItem.java | 2 + .../spring/config/AxonConfiguration.java | 8 ++++ 3 files changed, 17 insertions(+), 32 deletions(-) diff --git a/quickstart/src/main/java/org/axonframework/quickstart/AxonSpringConfiguration.java b/quickstart/src/main/java/org/axonframework/quickstart/AxonSpringConfiguration.java index c18bcef15f..a47270d7ca 100644 --- a/quickstart/src/main/java/org/axonframework/quickstart/AxonSpringConfiguration.java +++ b/quickstart/src/main/java/org/axonframework/quickstart/AxonSpringConfiguration.java @@ -29,45 +29,26 @@ import org.axonframework.eventsourcing.GenericAggregateFactory; import org.axonframework.eventsourcing.NoSnapshotTriggerDefinition; import org.axonframework.eventsourcing.eventstore.EmbeddedEventStore; +import org.axonframework.eventsourcing.eventstore.EventStorageEngine; import org.axonframework.eventsourcing.eventstore.EventStore; import org.axonframework.eventsourcing.eventstore.inmemory.InMemoryEventStorageEngine; import org.axonframework.messaging.annotation.ParameterResolverFactory; import org.axonframework.quickstart.annotated.ToDoEventHandler; import org.axonframework.quickstart.annotated.ToDoItem; import org.axonframework.spring.config.AnnotationDriven; +import org.axonframework.spring.config.EnableAxonAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; -@AnnotationDriven @Configuration +@EnableAxonAutoConfiguration +@Import(ToDoItem.class) public class AxonSpringConfiguration { @Bean - public CommandBus commandBus() { - return new SimpleCommandBus(); - } - - @Bean - public EventStore eventStore() { - return new EmbeddedEventStore(new InMemoryEventStorageEngine()); - } - - @Bean - public CommandGateway commandGateway() { - return new DefaultCommandGateway(commandBus()); - } - - @Bean - public Repository repository(ParameterResolverFactory parameterResolverFactory) { - return new EventSourcingRepository<>(new GenericAggregateFactory<>(ToDoItem.class), eventStore(), parameterResolverFactory, - NoSnapshotTriggerDefinition.INSTANCE); - } - - @Bean - public AggregateAnnotationCommandHandler aggregateAnnotationCommandHandler(ParameterResolverFactory parameterResolverFactory, Repository repository) { - AggregateAnnotationCommandHandler ch = new AggregateAnnotationCommandHandler<>(ToDoItem.class, repository, new AnnotationCommandTargetResolver(), parameterResolverFactory); - ch.subscribe(commandBus()); - return ch; + public EventStorageEngine eventStorageEngine() { + return new InMemoryEventStorageEngine(); } @Bean @@ -75,10 +56,4 @@ public ToDoEventHandler eventHandler() { return new ToDoEventHandler(); } - @Bean - public SubscribingEventProcessor eventProcessor() { - SubscribingEventProcessor eventProcessor = new SubscribingEventProcessor("eventProcessor", new SimpleEventHandlerInvoker(eventHandler()), eventStore()); - eventProcessor.start(); - return eventProcessor; - } } diff --git a/quickstart/src/main/java/org/axonframework/quickstart/annotated/ToDoItem.java b/quickstart/src/main/java/org/axonframework/quickstart/annotated/ToDoItem.java index 9c78657fa8..1b7886d095 100644 --- a/quickstart/src/main/java/org/axonframework/quickstart/annotated/ToDoItem.java +++ b/quickstart/src/main/java/org/axonframework/quickstart/annotated/ToDoItem.java @@ -23,12 +23,14 @@ import org.axonframework.quickstart.api.MarkCompletedCommand; import org.axonframework.quickstart.api.ToDoItemCompletedEvent; import org.axonframework.quickstart.api.ToDoItemCreatedEvent; +import org.axonframework.spring.stereotype.Aggregate; import static org.axonframework.commandhandling.model.AggregateLifecycle.apply; /** * @author Jettro Coenradie */ +@Aggregate public class ToDoItem { @AggregateIdentifier diff --git a/spring/src/main/java/org/axonframework/spring/config/AxonConfiguration.java b/spring/src/main/java/org/axonframework/spring/config/AxonConfiguration.java index 7af25158a4..1960621e66 100644 --- a/spring/src/main/java/org/axonframework/spring/config/AxonConfiguration.java +++ b/spring/src/main/java/org/axonframework/spring/config/AxonConfiguration.java @@ -1,6 +1,8 @@ package org.axonframework.spring.config; import org.axonframework.commandhandling.CommandBus; +import org.axonframework.commandhandling.gateway.CommandGateway; +import org.axonframework.commandhandling.gateway.DefaultCommandGateway; import org.axonframework.commandhandling.model.Repository; import org.axonframework.config.Configuration; import org.axonframework.config.Configurer; @@ -51,6 +53,12 @@ public ResourceInjector resourceInjector() { return new SpringResourceInjector(); } + @NoBeanOfType(CommandGateway.class) + @Bean + public CommandGateway commandGateway(CommandBus commandBus) { + return new DefaultCommandGateway(commandBus); + } + @Override public Repository repository(Class aggregate) { return config.repository(aggregate);