小明学Spring Framework容器启动系列——Bean名称生成策略

本文探讨Spring容器中Bean名称的生成策略,包括默认策略、注解策略和类全称策略。默认策略用于XML配置,结合Bean的前缀和序号确保唯一性。注解策略允许用户指定或自动生成Bean名称,而类全称策略则避免了不同包下相同类名Bean的名称冲突。了解这些策略有助于更好地理解和管理Spring应用中的Bean。
摘要由CSDN通过智能技术生成


系列文章——小明学Spring Framework容器启动系列
1. 小明学Spring Framework容器启动系列——Spring Framework容器启动概览 2. 小明学Spring Framework容器启动系列——Bean定义的读取
3. 小明学Spring Framework容器启动系列——Bean定义的解析 4.小明学Spring Framework容器启动系列——Bean名称生成策略
5.小明学Spring Framework容器启动系列——Bean定义的注册 6.小明学Spring Framework容器启动系列——容器PrepareRefresh
7.小明学Spring Framework容器启动系列——BeanFactory的初始化 8.小明学Spring Framework容器启动系列——BeanPostProcessor和BeanFactoryPostProcessor的初始化
9.小明学Spring Framework容器启动系列——国际化与事件的初始化 10.小明学Spring Framework容器启动系列——BeanFactory的初始化完成
11. 小明学Spring Framework容器启动系列——容器启动的收尾工作

1. 前言

1. 前言

Spring容器中,每一个Bean都必须要有一个唯一的名称,这个名称就是Bean在容器中的唯一标识,查找或者修改Bean的都必须要通过Bean名称这个唯一索引进行(我们知道Spring容器可以通过Bean名称和类型查找Bean,即使是按照Bean的类型查找Bean,也会先根据Bean的类型查找Bean的名称,然后再根据bean名称查找Bean)。 那么这个Bean名称是怎么生成的呢?这就是本文简述的重点内容,这个阶段在Spring容器启动过程中的步骤如下图中的红色方框部分所示。

大家需要注意区分Bean名称和别称之间的区别,一个Bean有且只有一个Bean名称,一个Bean名称可以有多个别称。

在这里插入图片描述

2. Bean名称生成策略

Spring容器中,有特定的接口用于产生Bean的名称,这个接口就是BeanNameGenerator,Spring容器默认提供了三种实现方式,分别是、默认Bean名称生成策略DefaultBeanNameGenerator、用于生成注解Bean名称的AnnotationBeanNameGenerator和类全称的bean名称策略FullyQualifiedAnnotationBeanNameGenerator, 下文将重点介绍者三中Bean名称生成策略。

/**
 * Strategy interface for generating bean names for bean definitions.
 */
public interface BeanNameGenerator {
   
	/**
	 * Generate a bean name for the given bean definition.
	 */
	String generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry);

}

2.1 默认Bean名称生成策略

默认Bean生产策略只有在xml格式的Spring容器中会用到,SpringBoot项目中基本不会使用。默认Bean生产策略的类名是DefaultBeanNameGenerator,该Bean的名称生成策略比较简单,Bean的名称由两部分组成:Bean的前缀名称+序号:

  • Bean的前缀名称:Bean的前缀名称通常是Bean的Class名称,但是也会有特殊情况下Bean定义没有Class名称,那么会使用以下前缀:1. 如果Bean是FactoryBean,那么Bean的前缀是FactoryBean的名称+ “$created”;2. 如果Bean定义有父Bean定义,那么Bean的前缀名称是父Bean定义的名称+ “$child”;
  • Bean的序号:假设我们定义了两个类名称相同的Bean,Spring如何确保Bean名称的唯一性呢?
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-御狐神-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值