diff --git a/spring-modulith-observability/pom.xml b/spring-modulith-observability/pom.xml index e0695dd2..f3cf61db 100644 --- a/spring-modulith-observability/pom.xml +++ b/spring-modulith-observability/pom.xml @@ -99,6 +99,12 @@ test + + org.springframework.amqp + spring-rabbit + test + + diff --git a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessor.java b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessor.java index 510c4a64..53cab561 100644 --- a/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessor.java +++ b/spring-modulith-observability/src/main/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessor.java @@ -33,6 +33,7 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.core.Ordered; import org.springframework.modulith.runtime.ApplicationModulesRuntime; import org.springframework.util.Assert; @@ -42,7 +43,7 @@ import org.springframework.util.Assert; * * @author Oliver Drotbohm */ -public class ModuleTracingBeanPostProcessor extends ModuleTracingSupport implements BeanPostProcessor { +public class ModuleTracingBeanPostProcessor extends ModuleTracingSupport implements BeanPostProcessor, Ordered { public static final String MODULE_BAGGAGE_KEY = "org.springframework.modulith.module"; @@ -70,6 +71,15 @@ public class ModuleTracingBeanPostProcessor extends ModuleTracingSupport impleme this.factory = factory; } + /* + * (non-Javadoc) + * @see org.springframework.core.Ordered#getOrder() + */ + @Override + public int getOrder() { + return Ordered.LOWEST_PRECEDENCE - 50; + } + /* * (non-Javadoc) * @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization(java.lang.Object, java.lang.String) diff --git a/spring-modulith-observability/src/test/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessorUnitTests.java b/spring-modulith-observability/src/test/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessorUnitTests.java index 42fe2745..747dcabe 100644 --- a/spring-modulith-observability/src/test/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessorUnitTests.java +++ b/spring-modulith-observability/src/test/java/org/springframework/modulith/observability/ModuleTracingBeanPostProcessorUnitTests.java @@ -22,6 +22,7 @@ import static org.mockito.Mockito.*; import example.sample.SampleProperties; import org.junit.jupiter.api.Test; +import org.springframework.amqp.rabbit.annotation.RabbitListenerAnnotationBeanPostProcessor; import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.beans.factory.support.RootBeanDefinition; import org.springframework.modulith.runtime.ApplicationModulesRuntime; @@ -50,4 +51,15 @@ class ModuleTracingBeanPostProcessorUnitTests { assertThat(result).isSameAs(bean); } + + @Test // GH-936 + void processorIsRegisteredBefore() { + + var rabbitProcessor = new RabbitListenerAnnotationBeanPostProcessor(); + var tracingProcessor = new ModuleTracingBeanPostProcessor(mock(ApplicationModulesRuntime.class), () -> null, + new DefaultListableBeanFactory()); + + assertThat(rabbitProcessor.getOrder()).isGreaterThan(tracingProcessor.getOrder()); + + } }