From a4ba8f61c9db846352ba3a53ad916953d66c8e18 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Tue, 29 Mar 2016 15:26:38 +0200 Subject: [PATCH] Backport 6dd8415 While working on gh-5309, a regression was introduced and fixed right the way on master. Unfortunately, the fix wasn't applied to `1.3.x` as it should have been. This commit applies 6dd8415 to `1.3.x` Closes gh-5901 --- .../IntegrationAutoConfiguration.java | 2 +- .../IntegrationAutoConfigurationTests.java | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfiguration.java index 00fc69b0a3..ef0f682fb2 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfiguration.java @@ -39,7 +39,6 @@ import org.springframework.integration.monitor.IntegrationMBeanExporter; @Configuration @ConditionalOnClass(EnableIntegration.class) @AutoConfigureAfter(JmxAutoConfiguration.class) -@ConditionalOnProperty(prefix = "spring.jmx", name = "enabled", havingValue = "true", matchIfMissing = true) public class IntegrationAutoConfiguration { @Configuration @@ -50,6 +49,7 @@ public class IntegrationAutoConfiguration { @Configuration @ConditionalOnClass(EnableIntegrationMBeanExport.class) @ConditionalOnMissingBean(value = IntegrationMBeanExporter.class, search = SearchStrategy.CURRENT) + @ConditionalOnProperty(prefix = "spring.jmx", name = "enabled", havingValue = "true", matchIfMissing = true) @EnableIntegrationMBeanExport(defaultDomain = "${spring.jmx.default-domain:}", server = "${spring.jmx.server:mbeanServer}") protected static class IntegrationJmxConfiguration { } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfigurationTests.java index d9f7c3bf48..f2c9297b85 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/integration/IntegrationAutoConfigurationTests.java @@ -30,6 +30,7 @@ import org.springframework.context.annotation.AnnotationConfigApplicationContext import org.springframework.integration.support.channel.HeaderChannelRegistry; import org.springframework.test.context.support.TestPropertySourceUtils; +import static org.hamcrest.Matchers.hasSize; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; @@ -94,6 +95,29 @@ public class IntegrationAutoConfigurationTests { this.context.close(); } + @Test + public void jmxIntegrationEnabledByDefault() { + load(); + MBeanServer mBeanServer = this.context.getBean(MBeanServer.class); + assertDomains(mBeanServer, true, "org.springframework.integration", + "org.springframework.integration.monitor"); + } + + @Test + public void disableJmxIntegration() { + load("spring.jmx.enabled=false"); + assertEquals(this.context.getBeansOfType(MBeanServer.class), hasSize(0)); + } + + @Test + public void customizeJmxDomain() { + load("spring.jmx.default-domain=org.foo"); + MBeanServer mBeanServer = this.context.getBean(MBeanServer.class); + assertDomains(mBeanServer, true, "org.foo"); + assertDomains(mBeanServer, false, "org.springframework.integration", + "org.springframework.integration.monitor"); + } + private static void assertDomains(MBeanServer mBeanServer, boolean expected, String... domains) { List actual = Arrays.asList(mBeanServer.getDomains());