diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnPropertyCondition.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnPropertyCondition.java index 5bb2fa9358..46d84cfbce 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnPropertyCondition.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/condition/OnPropertyCondition.java @@ -40,8 +40,11 @@ class OnPropertyCondition extends SpringBootCondition { public ConditionOutcome getMatchOutcome(ConditionContext context, AnnotatedTypeMetadata metadata) { - String prefix = (String) metadata.getAnnotationAttributes( - ConditionalOnProperty.class.getName()).get("prefix"); + String prefix = ((String) metadata.getAnnotationAttributes( + ConditionalOnProperty.class.getName()).get("prefix")).trim(); + if (!"".equals(prefix) && !prefix.endsWith(".")) { + prefix = prefix + "."; + } String[] names = (String[]) metadata.getAnnotationAttributes( ConditionalOnProperty.class.getName()).get("value"); Boolean relaxedNames = (Boolean) metadata.getAnnotationAttributes( diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnPropertyTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnPropertyTests.java index 18e231bdae..13d37eb59c 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnPropertyTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/condition/ConditionalOnPropertyTests.java @@ -79,6 +79,16 @@ public class ConditionalOnPropertyTests { assertTrue(this.context.containsBean("foo")); } + @Test + public void prefixWithoutPeriod() throws Exception { + EnvironmentTestUtils.addEnvironment(this.context.getEnvironment(), + "spring.property=value1"); + this.context + .register(RelaxedPropertiesRequiredConfigurationWithShortPrefix.class); + this.context.refresh(); + assertTrue(this.context.containsBean("foo")); + } + @Test public void nonRelaxedName() throws Exception { EnvironmentTestUtils.addEnvironment(this.context.getEnvironment(), @@ -110,6 +120,17 @@ public class ConditionalOnPropertyTests { } + @Configuration + @ConditionalOnProperty(prefix = "spring", value = "property") + protected static class RelaxedPropertiesRequiredConfigurationWithShortPrefix { + + @Bean + public String foo() { + return "foo"; + } + + } + @Configuration @ConditionalOnProperty(value = "the-relaxed-property", relaxedNames = false) protected static class NonRelaxedPropertiesRequiredConfiguration {