diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/EnableIntegrationManagement.java b/spring-integration-core/src/main/java/org/springframework/integration/config/EnableIntegrationManagement.java index 746eab58d3..93ac2f1417 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/EnableIntegrationManagement.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/EnableIntegrationManagement.java @@ -68,6 +68,7 @@ public @interface EnableIntegrationManagement { * None by default - no unconditional observation instrumentation. * Can be set to {@code *} to instrumentation all the integration components. * The pattern can start with {@code !} to negate the matching. + * The value can be a property placeholder and/or comma-separated. * @since 6.0 * @see org.springframework.integration.support.utils.PatternMatchUtils#smartMatch(String, String...) */ diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationManagementConfiguration.java b/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationManagementConfiguration.java index de071c96f3..7c84083abd 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationManagementConfiguration.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/IntegrationManagementConfiguration.java @@ -16,7 +16,9 @@ package org.springframework.integration.config; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.config.BeanDefinition; @@ -32,6 +34,7 @@ import org.springframework.integration.support.management.metrics.MetricsCaptor; import org.springframework.util.Assert; import io.micrometer.observation.ObservationRegistry; +import org.springframework.util.StringUtils; /** * {@code @Configuration} class that registers a {@link IntegrationManagementConfigurer} bean. @@ -75,7 +78,7 @@ public class IntegrationManagementConfiguration implements ImportAware, Environm Boolean.parseBoolean(this.environment.resolvePlaceholders( (String) this.attributes.get("defaultLoggingEnabled")))); configurer.setMetricsCaptorProvider(metricsCaptorProvider); - String[] observationPatterns = (String[]) this.attributes.get("observationPatterns"); + String[] observationPatterns = obtainObservationPatterns(); if (observationPatterns.length > 0) { configurer.setObservationPatterns(observationPatterns); configurer.setObservationRegistry(observationRegistryProvider); @@ -83,4 +86,14 @@ public class IntegrationManagementConfiguration implements ImportAware, Environm return configurer; } + private String[] obtainObservationPatterns() { + Set patterns = new HashSet<>(); + String[] observationPatterns = (String[]) this.attributes.get("observationPatterns"); + for (String observationPattern : observationPatterns) { + String pattern = this.environment.resolvePlaceholders(observationPattern); + patterns.addAll(StringUtils.commaDelimitedListToSet(pattern)); + } + return patterns.toArray(new String[0]); + } + } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/support/management/observation/IntegrationObservabilityZipkinTests.java b/spring-integration-core/src/test/java/org/springframework/integration/support/management/observation/IntegrationObservabilityZipkinTests.java index 5522a8e556..47ddd6b3c5 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/support/management/observation/IntegrationObservabilityZipkinTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/support/management/observation/IntegrationObservabilityZipkinTests.java @@ -106,7 +106,9 @@ public class IntegrationObservabilityZipkinTests extends SampleTestRunner { @Configuration @EnableIntegration - @EnableIntegrationManagement(observationPatterns = { "observedEndpoint", "testInboundGateway" }) + @EnableIntegrationManagement( + observationPatterns = + "${spring.integration.management.observation-patterns:observedEndpoint,testInboundGateway}") public static class ObservationIntegrationTestConfiguration { CountDownLatch observedHandlerLatch = new CountDownLatch(1);