spring笔记-BeanNameGenerator

1.内置BeanNameGenerator

BeanNameGenerator为BeanDefinition生成Bean名称

public interface BeanNameGenerator {

    /**
     * Generate a bean name for the given bean definition.
     * @param definition the bean definition to generate a name for
     * @param registry the bean definition registry that the given definition
     * is supposed to be registered with
     * @return the generated bean name
     */
    String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry);

}

如下图

有2种策略,一种是是扫描xml(<context:component-scan />)时,一种是在注解扫描时(@ComponentScan)

测试代码:

public class AnnotationBeanNameGeneratorTests {

    private BeanNameGenerator beanNameGenerator = new DefaultBeanNameGenerator();
    //private BeanNameGenerator beanNameGenerator = new AnnotationBeanNameGenerator();

    @Test
    public void generateBeanNameWithNamedComponent() {
        BeanDefinitionRegistry registry = new SimpleBeanDefinitionRegistry();
        AnnotatedBeanDefinition bd = new AnnotatedGenericBeanDefinition(ComponentWithName.class);
        String beanName = this.beanNameGenerator.generateBeanName(bd, registry);
        assertNotNull("The generated beanName must *never* be null.", beanName);
        assertTrue("The generated beanName must *never* be blank.", StringUtils.hasText(beanName));
        assertEquals("walden", beanName);
    }
}

2.自定义BeanNameGenerator

可以指定nameGenerator属性来自定义bean的命名生成规则

public @interface ComponentScan {
    Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;
}

参考:

http://www.cnblogs.com/jason0529/p/5272265.html
http://www.cnblogs.com/jason0529/p/5274650.html
http://yunzhongxia.iteye.com/blog/898433

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,079评论 19 139
  • 1- IOC的概念 IOC:也即控制反转,DI即依赖注入,控制反转IOC和依赖注入DI其实就是同个概念的两个不同...
    zhanglbjames阅读 3,045评论 1 3
  • 前些日子从@张鑫旭微博处得一份推荐(Front-end-tutorial),号称最全的资源教程-前端涉及的所有知识...
    谷子多阅读 4,311评论 0 44
  • 包含的重点内容:JAVA基础JVM 知识开源框架知识操作系统多线程TCP 与 HTTP架构设计与分布式算法数据库知...
    消失er阅读 4,389评论 1 10
  • 1、不给别人带来更多的麻烦,就是一个生活中有爱心的值得赞许的人。 2、你可以不成功,但是不能不成长,每个人都应在等...
    许小敬阅读 229评论 0 0