我在测试套件中为应用程序在多个位置使用@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?我希望它是默认的。

最佳答案

像这样创建您自己的注释:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@ComponentScan(nameGenerator = FullyQualifiedAnnotationBeanNameGenerator.class)
public @interface MyComponentScan{

}

10-08 17:06