我试图创建自己的@ EnableXXX风格的annotation(即@EnableCustomizedPropertySources)。为此,annotation导入CustomizedPropertySourcesConfiguration类,后者又实现了ImportAware,以便访问@EnableCustomizedPropertySources annotation的属性。
注解:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import(CustomizedPropertySourcesConfiguration.class)
public @interface EnableCustomizedPropertySources {
String externalFolderName();
String propertiesFileName();
(...)
}
字符串
导入的配置类:
@Configuration
public class CustomizedPropertySourcesConfiguration implements ImportAware {
protected AnnotationAttributes enableCustomizedPropertySourcesAttributes;
@Override
public void setImportMetadata(AnnotationMetadata importMetadata) {
Map<String, Object> attributes = importMetadata.getAnnotationAttributes(EnableCustomizedPropertySources.class.getName(), false);
this.enableCustomizedPropertySourcesAttributes = AnnotationAttributes.fromMap(attributes);
}
@Bean
public PropertySourcesPlaceholderConfigurer propertySource() {
return (...);
}
}
型
问题是,当我用@EnableCustomizedPropertySources annotation注解一些@Configuration class时,Spring不会调用setImportMetadata方法,因此我无法访问annotations属性。
1条答案
按热度按时间xxslljrj1#
ImportAware
类(CustomizedPropertySourcesConfiguration)需要以下两个:字符串