diff --git a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/pom.xml
index 7ba6787c3d..81791707f9 100644
--- a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/pom.xml
+++ b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/pom.xml
@@ -20,6 +20,11 @@
lombok
test
+
+ javax.validation
+ validation-api
+ test
+
org.springframework.boot
spring-boot-test-support
diff --git a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java
index 394e0fbf60..a27a73fade 100644
--- a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java
+++ b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/ConfigurationMetadataAnnotationProcessorTests.java
@@ -66,6 +66,7 @@ import org.springframework.boot.configurationsample.simple.SimpleCollectionPrope
import org.springframework.boot.configurationsample.simple.SimplePrefixValueProperties;
import org.springframework.boot.configurationsample.simple.SimpleProperties;
import org.springframework.boot.configurationsample.simple.SimpleTypeProperties;
+import org.springframework.boot.configurationsample.specific.AnnotatedGetter;
import org.springframework.boot.configurationsample.specific.BoxingPojo;
import org.springframework.boot.configurationsample.specific.BuilderPojo;
import org.springframework.boot.configurationsample.specific.DeprecatedUnrelatedMethodPojo;
@@ -337,6 +338,15 @@ public class ConfigurationMetadataAnnotationProcessorTests {
.withDeprecation(null, null));
}
+ @Test
+ public void annotatedGetter() {
+ ConfigurationMetadata metadata = compile(AnnotatedGetter.class);
+ assertThat(metadata).has(Metadata.withGroup("specific")
+ .fromSource(AnnotatedGetter.class));
+ assertThat(metadata).has(Metadata.withProperty("specific.name", String.class)
+ .fromSource(AnnotatedGetter.class));
+ }
+
@Test
public void innerClassRootConfig() {
ConfigurationMetadata metadata = compile(InnerClassRootConfig.class);
diff --git a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationsample/specific/AnnotatedGetter.java b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationsample/specific/AnnotatedGetter.java
new file mode 100644
index 0000000000..2e1872f837
--- /dev/null
+++ b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationsample/specific/AnnotatedGetter.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2012-2018 the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.springframework.boot.configurationsample.specific;
+
+import javax.validation.constraints.NotEmpty;
+
+import org.springframework.boot.configurationsample.ConfigurationProperties;
+
+/**
+ * An annotated getter with {@code NotEmpty} that triggers a different class type
+ * in the compiler. See #11512
+ *
+ * @author Stephane Nicoll
+ */
+@ConfigurationProperties("specific")
+public class AnnotatedGetter {
+
+ private String name;
+
+ @NotEmpty
+ public String getName() {
+ return this.name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}