Rename @ConfigurationPropertiesImport
Rename `@ConfigurationPropertiesImport` to `@ImportAsConfigurationPropertiesBean` and also refine the registrar so that it can be used with type directly annotated with `@ConfigurationProperties`. Closes gh-23172
This commit is contained in:
@@ -20,20 +20,22 @@ import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.configurationprocessor.metadata.ConfigurationMetadata;
|
||||
import org.springframework.boot.configurationprocessor.metadata.Metadata;
|
||||
import org.springframework.boot.configurationsample.ConfigurationPropertiesImport;
|
||||
import org.springframework.boot.configurationsample.ConfigurationPropertiesImports;
|
||||
import org.springframework.boot.configurationsample.ImportAsConfigurationPropertiesBean;
|
||||
import org.springframework.boot.configurationsample.ImportAsConfigurationPropertiesBeans;
|
||||
import org.springframework.boot.configurationsample.importbean.ImportAnnotatedJavaBean;
|
||||
import org.springframework.boot.configurationsample.importbean.ImportJavaBeanConfigurationPropertiesBean;
|
||||
import org.springframework.boot.configurationsample.importbean.ImportMultipleTypeConfigurationPropertiesBean;
|
||||
import org.springframework.boot.configurationsample.importbean.ImportRepeatedConfigurationPropertiesBean;
|
||||
import org.springframework.boot.configurationsample.importbean.ImportValueObjectConfigurationPropertiesBean;
|
||||
import org.springframework.boot.configurationsample.importbean.ImportedAnnotatedJavaBean;
|
||||
import org.springframework.boot.configurationsample.importbean.ImportedJavaBean;
|
||||
import org.springframework.boot.configurationsample.importbean.ImportedValueObject;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Tests for {@link ConfigurationPropertiesImport} and
|
||||
* {@link ConfigurationPropertiesImports}.
|
||||
* Tests for {@link ImportAsConfigurationPropertiesBean} and
|
||||
* {@link ImportAsConfigurationPropertiesBeans}.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@@ -69,4 +71,11 @@ public class ImportBeanTests extends AbstractMetadataGenerationTests {
|
||||
assertThat(metadata).has(Metadata.withProperty("jb.name", String.class).fromSource(ImportedJavaBean.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void importAnnotatedJavaBean() {
|
||||
ConfigurationMetadata metadata = compile(ImportAnnotatedJavaBean.class);
|
||||
assertThat(metadata)
|
||||
.has(Metadata.withProperty("test.name", String.class).fromSource(ImportedAnnotatedJavaBean.class));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -40,8 +40,8 @@ class MetadataGenerationEnvironmentFactory implements Function<ProcessingEnviron
|
||||
TestConfigurationMetadataAnnotationProcessor.ENDPOINT_ANNOTATION,
|
||||
TestConfigurationMetadataAnnotationProcessor.READ_OPERATION_ANNOTATION,
|
||||
TestConfigurationMetadataAnnotationProcessor.NAME_ANNOTATION,
|
||||
TestConfigurationMetadataAnnotationProcessor.CONFIGURATION_PROPERTIES_IMPORT_ANNOATION,
|
||||
TestConfigurationMetadataAnnotationProcessor.CONFIGURATION_PROPERTIES_IMPORTS_ANNOATION);
|
||||
TestConfigurationMetadataAnnotationProcessor.IMPORT_AS_CONFIGURATION_PROPERTIES_BEAN_ANNOATION,
|
||||
TestConfigurationMetadataAnnotationProcessor.IMPORT_AS_CONFIGURATION_PROPERTIES_BEANS_ANNOATION);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -57,9 +57,9 @@ public class TestConfigurationMetadataAnnotationProcessor extends ConfigurationM
|
||||
|
||||
public static final String NAME_ANNOTATION = "org.springframework.boot.configurationsample.Name";
|
||||
|
||||
public static final String CONFIGURATION_PROPERTIES_IMPORT_ANNOATION = "org.springframework.boot.configurationsample.ConfigurationPropertiesImport";
|
||||
public static final String IMPORT_AS_CONFIGURATION_PROPERTIES_BEAN_ANNOATION = "org.springframework.boot.configurationsample.ImportAsConfigurationPropertiesBean";
|
||||
|
||||
public static final String CONFIGURATION_PROPERTIES_IMPORTS_ANNOATION = "org.springframework.boot.configurationsample.ConfigurationPropertiesImports";
|
||||
public static final String IMPORT_AS_CONFIGURATION_PROPERTIES_BEANS_ANNOATION = "org.springframework.boot.configurationsample.ImportAsConfigurationPropertiesBeans";
|
||||
|
||||
private ConfigurationMetadata metadata;
|
||||
|
||||
@@ -110,13 +110,13 @@ public class TestConfigurationMetadataAnnotationProcessor extends ConfigurationM
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String configurationPropertiesImportAnnotation() {
|
||||
return CONFIGURATION_PROPERTIES_IMPORT_ANNOATION;
|
||||
protected String importAsConfigurationPropertiesBeanAnnotation() {
|
||||
return IMPORT_AS_CONFIGURATION_PROPERTIES_BEAN_ANNOATION;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String configurationPropertiesImportsAnnotation() {
|
||||
return CONFIGURATION_PROPERTIES_IMPORTS_ANNOATION;
|
||||
protected String importAsConfigurationPropertiesBeansAnnotation() {
|
||||
return IMPORT_AS_CONFIGURATION_PROPERTIES_BEANS_ANNOATION;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -26,8 +26,8 @@ import java.lang.annotation.Target;
|
||||
import org.springframework.core.annotation.AliasFor;
|
||||
|
||||
/**
|
||||
* Alternative to Spring Boot's {@code ConfigurationPropertiesImport} for testing (removes
|
||||
* the need for a dependency on the real annotation).
|
||||
* Alternative to Spring Boot's {@code ImportAsConfigurationPropertiesBean} for testing
|
||||
* (removes the need for a dependency on the real annotation).
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@@ -35,8 +35,8 @@ import org.springframework.core.annotation.AliasFor;
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
@ConfigurationProperties
|
||||
@Repeatable(ConfigurationPropertiesImports.class)
|
||||
public @interface ConfigurationPropertiesImport {
|
||||
@Repeatable(ImportAsConfigurationPropertiesBeans.class)
|
||||
public @interface ImportAsConfigurationPropertiesBean {
|
||||
|
||||
Class<?>[] type();
|
||||
|
||||
@@ -23,7 +23,7 @@ import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* Alternative to Spring Boot's {@code ConfigurationPropertiesImports} for testing
|
||||
* Alternative to Spring Boot's {@code ImportAsConfigurationPropertiesBeans} for testing
|
||||
* (removes the need for a dependency on the real annotation).
|
||||
*
|
||||
* @author Phillip Webb
|
||||
@@ -31,8 +31,8 @@ import java.lang.annotation.Target;
|
||||
@Target(ElementType.TYPE)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Documented
|
||||
public @interface ConfigurationPropertiesImports {
|
||||
public @interface ImportAsConfigurationPropertiesBeans {
|
||||
|
||||
ConfigurationPropertiesImport[] value();
|
||||
ImportAsConfigurationPropertiesBean[] value();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright 2012-2020 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
|
||||
*
|
||||
* https://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.importbean;
|
||||
|
||||
import org.springframework.boot.configurationsample.ImportAsConfigurationPropertiesBean;
|
||||
|
||||
/**
|
||||
* An import of a java bean.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@ImportAsConfigurationPropertiesBean(type = ImportedAnnotatedJavaBean.class)
|
||||
public class ImportAnnotatedJavaBean {
|
||||
|
||||
}
|
||||
@@ -16,14 +16,14 @@
|
||||
|
||||
package org.springframework.boot.configurationsample.importbean;
|
||||
|
||||
import org.springframework.boot.configurationsample.ConfigurationPropertiesImport;
|
||||
import org.springframework.boot.configurationsample.ImportAsConfigurationPropertiesBean;
|
||||
|
||||
/**
|
||||
* An import of a java bean.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@ConfigurationPropertiesImport(type = ImportedJavaBean.class, prefix = "importbean")
|
||||
@ImportAsConfigurationPropertiesBean(type = ImportedJavaBean.class, prefix = "importbean")
|
||||
public class ImportJavaBeanConfigurationPropertiesBean {
|
||||
|
||||
}
|
||||
|
||||
@@ -16,14 +16,15 @@
|
||||
|
||||
package org.springframework.boot.configurationsample.importbean;
|
||||
|
||||
import org.springframework.boot.configurationsample.ConfigurationPropertiesImport;
|
||||
import org.springframework.boot.configurationsample.ImportAsConfigurationPropertiesBean;
|
||||
|
||||
/**
|
||||
* An import of a java bean and a value object.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@ConfigurationPropertiesImport(type = { ImportedJavaBean.class, ImportedValueObject.class }, prefix = "importbean")
|
||||
@ImportAsConfigurationPropertiesBean(type = { ImportedJavaBean.class, ImportedValueObject.class },
|
||||
prefix = "importbean")
|
||||
public class ImportMultipleTypeConfigurationPropertiesBean {
|
||||
|
||||
}
|
||||
|
||||
@@ -16,15 +16,15 @@
|
||||
|
||||
package org.springframework.boot.configurationsample.importbean;
|
||||
|
||||
import org.springframework.boot.configurationsample.ConfigurationPropertiesImport;
|
||||
import org.springframework.boot.configurationsample.ImportAsConfigurationPropertiesBean;
|
||||
|
||||
/**
|
||||
* An import of a java bean and a value object.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@ConfigurationPropertiesImport(type = ImportedJavaBean.class, prefix = "jb")
|
||||
@ConfigurationPropertiesImport(type = ImportedValueObject.class, prefix = "vo")
|
||||
@ImportAsConfigurationPropertiesBean(type = ImportedJavaBean.class, prefix = "jb")
|
||||
@ImportAsConfigurationPropertiesBean(type = ImportedValueObject.class, prefix = "vo")
|
||||
public class ImportRepeatedConfigurationPropertiesBean {
|
||||
|
||||
}
|
||||
|
||||
@@ -16,14 +16,14 @@
|
||||
|
||||
package org.springframework.boot.configurationsample.importbean;
|
||||
|
||||
import org.springframework.boot.configurationsample.ConfigurationPropertiesImport;
|
||||
import org.springframework.boot.configurationsample.ImportAsConfigurationPropertiesBean;
|
||||
|
||||
/**
|
||||
* An import of a value object.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@ConfigurationPropertiesImport(type = ImportedValueObject.class, prefix = "importbean")
|
||||
@ImportAsConfigurationPropertiesBean(type = ImportedValueObject.class, prefix = "importbean")
|
||||
public class ImportValueObjectConfigurationPropertiesBean {
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright 2012-2020 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
|
||||
*
|
||||
* https://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.importbean;
|
||||
|
||||
import org.springframework.boot.configurationsample.ConfigurationProperties;
|
||||
|
||||
/**
|
||||
* Java bean that can be imported.
|
||||
*
|
||||
* @author Phillip Webb
|
||||
*/
|
||||
@ConfigurationProperties(prefix = "test")
|
||||
public class ImportedAnnotatedJavaBean {
|
||||
|
||||
private String name;
|
||||
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user