From 6091ae5657bcebb8f4d327c0436c1a9629c0d7c9 Mon Sep 17 00:00:00 2001 From: Oliver Libutzki Date: Thu, 2 Mar 2023 16:34:50 +0000 Subject: [PATCH] Usage of BeanFactoryUtils.beansOfTypeIncludingAncestors --- .../springboot/autoconfig/AxonAutoConfiguration.java | 6 ++++-- .../ApplicationContextLookupParameterResolverFactory.java | 4 +++- .../spring/config/CommandHandlerSubscriber.java | 3 ++- .../config/annotation/SpringHandlerDefinitionBean.java | 6 ++++-- .../annotation/SpringHandlerEnhancerDefinitionBean.java | 5 +++-- .../spring/eventsourcing/SpringAggregateSnapshotter.java | 6 ++++-- .../SpringAggregateSnapshotterFactoryBean.java | 8 +++++--- 7 files changed, 25 insertions(+), 13 deletions(-) diff --git a/spring-boot-autoconfigure/src/main/java/org/axonframework/springboot/autoconfig/AxonAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/axonframework/springboot/autoconfig/AxonAutoConfiguration.java index 74cf027f98..51bb7c71d4 100644 --- a/spring-boot-autoconfigure/src/main/java/org/axonframework/springboot/autoconfig/AxonAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/axonframework/springboot/autoconfig/AxonAutoConfiguration.java @@ -85,6 +85,8 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Primary; +import static org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors; + import java.util.Map; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -181,7 +183,7 @@ private Serializer buildSerializer(RevisionResolver revisionResolver, SerializerProperties.SerializerType serializerType) { switch (serializerType) { case JACKSON: - Map objectMapperBeans = applicationContext.getBeansOfType(ObjectMapper.class); + Map objectMapperBeans = beansOfTypeIncludingAncestors(applicationContext, ObjectMapper.class); ObjectMapper objectMapper = objectMapperBeans.containsKey("defaultAxonObjectMapper") ? objectMapperBeans.get("defaultAxonObjectMapper") : objectMapperBeans.values().stream().findFirst() @@ -197,7 +199,7 @@ private Serializer buildSerializer(RevisionResolver revisionResolver, case XSTREAM: case DEFAULT: default: - Map xStreamBeans = applicationContext.getBeansOfType(XStream.class); + Map xStreamBeans = beansOfTypeIncludingAncestors(applicationContext, XStream.class); XStream xStream = xStreamBeans.containsKey("defaultAxonXStream") ? xStreamBeans.get("defaultAxonXStream") : xStreamBeans.values().stream().findFirst() diff --git a/spring/src/main/java/org/axonframework/spring/config/ApplicationContextLookupParameterResolverFactory.java b/spring/src/main/java/org/axonframework/spring/config/ApplicationContextLookupParameterResolverFactory.java index ad9c5909a7..34094b6f0b 100644 --- a/spring/src/main/java/org/axonframework/spring/config/ApplicationContextLookupParameterResolverFactory.java +++ b/spring/src/main/java/org/axonframework/spring/config/ApplicationContextLookupParameterResolverFactory.java @@ -24,6 +24,8 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; +import static org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors; + import java.util.ArrayList; import java.util.List; import javax.annotation.Nonnull; @@ -76,7 +78,7 @@ public void setApplicationContext(@Nonnull ApplicationContext applicationContext @Override public void afterPropertiesSet() { - factories.addAll(applicationContext.getBeansOfType(ParameterResolverFactory.class).values()); + factories.addAll(beansOfTypeIncludingAncestors(applicationContext, ParameterResolverFactory.class).values()); parameterResolverFactory = MultiParameterResolverFactory.ordered(factories); } } diff --git a/spring/src/main/java/org/axonframework/spring/config/CommandHandlerSubscriber.java b/spring/src/main/java/org/axonframework/spring/config/CommandHandlerSubscriber.java index e2c0ff9866..351486ed21 100644 --- a/spring/src/main/java/org/axonframework/spring/config/CommandHandlerSubscriber.java +++ b/spring/src/main/java/org/axonframework/spring/config/CommandHandlerSubscriber.java @@ -20,6 +20,7 @@ import org.axonframework.commandhandling.CommandMessageHandler; import org.axonframework.messaging.MessageHandler; import org.springframework.beans.BeansException; +import org.springframework.beans.factory.BeanFactoryUtils; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.SmartLifecycle; @@ -83,7 +84,7 @@ public void stop(Runnable callback) { @Override @SuppressWarnings("unchecked") public void start() { - if (commandBus == null && !applicationContext.getBeansOfType(CommandBus.class).isEmpty()) { + if (commandBus == null && !beansOfTypeIncludingAncestors(applicationContext, CommandBus.class).isEmpty()) { commandBus = applicationContext.getBean(CommandBus.class); } if (commandHandlers == null) { diff --git a/spring/src/main/java/org/axonframework/spring/config/annotation/SpringHandlerDefinitionBean.java b/spring/src/main/java/org/axonframework/spring/config/annotation/SpringHandlerDefinitionBean.java index 569bb9ad6f..f2e5471673 100644 --- a/spring/src/main/java/org/axonframework/spring/config/annotation/SpringHandlerDefinitionBean.java +++ b/spring/src/main/java/org/axonframework/spring/config/annotation/SpringHandlerDefinitionBean.java @@ -29,6 +29,8 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; +import static org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors; + import java.util.ArrayList; import java.util.List; import javax.annotation.Nonnull; @@ -127,8 +129,8 @@ public void setApplicationContext(@Nonnull ApplicationContext applicationContext private void initialize() { definitions.addAll(ClasspathHandlerDefinition.forClassLoader(classLoader).getDelegates()); - definitions.addAll(applicationContext.getBeansOfType(HandlerDefinition.class).values()); + definitions.addAll(beansOfTypeIncludingAncestors(applicationContext, HandlerDefinition.class).values()); enhancers.addAll(ClasspathHandlerEnhancerDefinition.forClassLoader(classLoader).getDelegates()); - enhancers.addAll(applicationContext.getBeansOfType(HandlerEnhancerDefinition.class).values()); + enhancers.addAll(beansOfTypeIncludingAncestors(applicationContext, HandlerEnhancerDefinition.class).values()); } } diff --git a/spring/src/main/java/org/axonframework/spring/config/annotation/SpringHandlerEnhancerDefinitionBean.java b/spring/src/main/java/org/axonframework/spring/config/annotation/SpringHandlerEnhancerDefinitionBean.java index f0adf065b0..1f33f8e512 100644 --- a/spring/src/main/java/org/axonframework/spring/config/annotation/SpringHandlerEnhancerDefinitionBean.java +++ b/spring/src/main/java/org/axonframework/spring/config/annotation/SpringHandlerEnhancerDefinitionBean.java @@ -26,6 +26,8 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; +import static org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors; + import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -110,8 +112,7 @@ public void setAdditionalHandlers(List additionalFact private void initialize() { enhancers.addAll(ClasspathHandlerEnhancerDefinition.forClassLoader(classLoader).getDelegates()); - Map enhancersFound = applicationContext.getBeansOfType( - HandlerEnhancerDefinition.class); + Map enhancersFound = beansOfTypeIncludingAncestors(applicationContext, HandlerEnhancerDefinition.class); enhancers.addAll(enhancersFound.values()); } } diff --git a/spring/src/main/java/org/axonframework/spring/eventsourcing/SpringAggregateSnapshotter.java b/spring/src/main/java/org/axonframework/spring/eventsourcing/SpringAggregateSnapshotter.java index 3749cb316b..36aa77bb03 100644 --- a/spring/src/main/java/org/axonframework/spring/eventsourcing/SpringAggregateSnapshotter.java +++ b/spring/src/main/java/org/axonframework/spring/eventsourcing/SpringAggregateSnapshotter.java @@ -30,6 +30,8 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; +import static org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors; + import java.util.Collections; import java.util.Objects; import java.util.Optional; @@ -93,11 +95,11 @@ protected AggregateFactory getAggregateFactory(Class aggregateType) { AggregateFactory aggregateFactory = super.getAggregateFactory(aggregateType); if (aggregateFactory == null) { Optional factory = - applicationContext.getBeansOfType(AggregateFactory.class).values().stream() + beansOfTypeIncludingAncestors(applicationContext, AggregateFactory.class).values().stream() .filter(af -> Objects.equals(af.getAggregateType(), aggregateType)) .findFirst(); if (!factory.isPresent()) { - factory = applicationContext.getBeansOfType(EventSourcingRepository.class).values().stream() + factory = beansOfTypeIncludingAncestors(applicationContext, EventSourcingRepository.class).values().stream() .map((Function) EventSourcingRepository::getAggregateFactory) .filter(af -> Objects.equals(af.getAggregateType(), aggregateType)) .findFirst(); diff --git a/spring/src/main/java/org/axonframework/spring/eventsourcing/SpringAggregateSnapshotterFactoryBean.java b/spring/src/main/java/org/axonframework/spring/eventsourcing/SpringAggregateSnapshotterFactoryBean.java index 781d7f6055..dadeddc5cb 100644 --- a/spring/src/main/java/org/axonframework/spring/eventsourcing/SpringAggregateSnapshotterFactoryBean.java +++ b/spring/src/main/java/org/axonframework/spring/eventsourcing/SpringAggregateSnapshotterFactoryBean.java @@ -40,6 +40,8 @@ import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.support.DefaultTransactionDefinition; +import static org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors; + import java.util.ArrayList; import java.util.Map; import java.util.concurrent.Executor; @@ -69,7 +71,7 @@ public class SpringAggregateSnapshotterFactoryBean public SpringAggregateSnapshotter getObject() { if (transactionManager == null) { Map candidates = - applicationContext.getBeansOfType(PlatformTransactionManager.class); + beansOfTypeIncludingAncestors(applicationContext, PlatformTransactionManager.class); if (candidates.size() == 1) { this.transactionManager = candidates.values().iterator().next(); } @@ -91,8 +93,8 @@ public SpringAggregateSnapshotter getObject() { } if (handlerDefinition == null) { - handlerDefinition = new HandlerDefinitionFactoryBean(new ArrayList<>(applicationContext.getBeansOfType(HandlerDefinition.class).values()), - new ArrayList<>(applicationContext.getBeansOfType(HandlerEnhancerDefinition.class).values())) + handlerDefinition = new HandlerDefinitionFactoryBean(new ArrayList<>(beansOfTypeIncludingAncestors(applicationContext, HandlerDefinition.class).values()), + new ArrayList<>(beansOfTypeIncludingAncestors(applicationContext, HandlerEnhancerDefinition.class).values())) .getObject(); }