FakerApplication.java

package es.um.atica.faker;

import java.util.function.Consumer;
import java.util.function.Supplier;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.filter.ForwardedHeaderFilter;

import es.um.atica.faker.users.adapters.events.UserAllConsumer;
import es.um.atica.faker.users.adapters.events.UserCreatedConsumer;
import es.um.atica.faker.users.adapters.events.UserCreatedConsumerOther;
import es.um.atica.faker.users.adapters.events.UserDeletedConsumer;
import es.um.atica.faker.users.domain.event.UserCreated;
import es.um.atica.faker.users.domain.event.UserDeleted;
import es.um.atica.faker.users.domain.event.UserEvent;
import es.um.atica.shared.adapters.events.SpringEventBus;
import es.um.atica.shared.domain.events.Event;
import es.um.atica.shared.domain.events.EventBus;

@SpringBootApplication
@ComponentScan(basePackages = {"es.um.atica.faker","es.um.atica.shared"})
public class FakerApplication {

	@Autowired
	private SpringEventBus springEventBus;

	@Autowired
	private UserCreatedConsumer userCreatedConsumer;

	@Autowired
	private UserCreatedConsumerOther userCreatedConsumerOther;

	@Autowired
	private UserAllConsumer userAllConsumer;

	@Autowired
	private UserDeletedConsumer userDeletedConsumer;

	@Bean
	public ForwardedHeaderFilter forwardedHeaderFilter() {
        return new ForwardedHeaderFilter();
    }

	public static void main(String[] args) {
		SpringApplication.run(FakerApplication.class, args);
	}

	@Bean
	public Supplier<Event> eventProducer() {
		return springEventBus;
	}

	@Bean
	public Consumer<UserCreated> createdConsumer() {
		return userCreatedConsumer;
	}

	@Bean
	public Consumer<UserCreated> createdConsumer2() {
		return userCreatedConsumerOther;
	}

	@Bean
	public Consumer<UserEvent> allConsumer() {
		return userAllConsumer;
	}

	@Bean
	public Consumer<UserDeleted> deletedConsumer() {
		return userDeletedConsumer;
	}

	@Bean
	public EventBus eventTypeResolver() {
		return springEventBus;
	}

}