我在测试套件中为我的应用程序使用@ComponentScan
个多个位置。我想在Spring中替换默认的bean名称生成,所以我自己创建了这样的生成器:
public class FullyQualifiedAnnotationBeanNameGenerator extends AnnotationBeanNameGenerator {
protected String buildDefaultBeanName(BeanDefinition definition) {
return definition.getBeanClassName();
}
}
要使用生成器,我这样做:
@ComponentScan(nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class)
问题是,对于我的测试配置类(使用@ComponentScan
注释的类)中的每个@Configuration
,我必须重复nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class
。
我是否可以告诉Spring始终使用FullyQualifiedAnnotationBeanNameGenerator
作为nameGenerator?我希望它是默认的。
答案 0 :(得分:1)
只需按照以下方式创建自己的注释:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@ComponentScan(nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class)
public @interface MyComponentScan{
}