Skip to content

Commit

Permalink
Improve autoconfiguration sample
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrea Ratto committed Sep 24, 2016
1 parent b6af95f commit 74db4d9
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 32 deletions.
Expand Up @@ -29,56 +29,31 @@
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<ToDoItem> repository(ParameterResolverFactory parameterResolverFactory) {
return new EventSourcingRepository<>(new GenericAggregateFactory<>(ToDoItem.class), eventStore(), parameterResolverFactory,
NoSnapshotTriggerDefinition.INSTANCE);
}

@Bean
public AggregateAnnotationCommandHandler aggregateAnnotationCommandHandler(ParameterResolverFactory parameterResolverFactory, Repository<ToDoItem> repository) {
AggregateAnnotationCommandHandler<ToDoItem> ch = new AggregateAnnotationCommandHandler<>(ToDoItem.class, repository, new AnnotationCommandTargetResolver(), parameterResolverFactory);
ch.subscribe(commandBus());
return ch;
public EventStorageEngine eventStorageEngine() {
return new InMemoryEventStorageEngine();
}

@Bean
public ToDoEventHandler eventHandler() {
return new ToDoEventHandler();
}

@Bean
public SubscribingEventProcessor eventProcessor() {
SubscribingEventProcessor eventProcessor = new SubscribingEventProcessor("eventProcessor", new SimpleEventHandlerInvoker(eventHandler()), eventStore());
eventProcessor.start();
return eventProcessor;
}
}
Expand Up @@ -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
Expand Down
@@ -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;
Expand Down Expand Up @@ -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 <T> Repository<T> repository(Class<T> aggregate) {
return config.repository(aggregate);
Expand Down

0 comments on commit 74db4d9

Please sign in to comment.