我在测试套件中为应用程序在多个位置使用@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{
}