You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bean名称中的"&"含义是什么?Spring Qualifier注解中"&"作用解析

Spring中"&"符号的两个常见场景解析

1. Bean名称中的"&"代表什么?

这个符号其实和Spring的FactoryBean接口直接相关。FactoryBean是Spring里一种特殊的Bean类型——它本身是一个Bean,但核心作用是生成另一个Bean对象(通过getObject()方法)。

默认情况下,当你通过Bean名称从Spring容器获取实例时,拿到的是FactoryBean生成的目标对象。但如果在Bean名称前加上&符号,你获取到的就是FactoryBean这个Bean本身的实例了。

举个简单例子:
假设我们定义了一个UserFactoryBean实现FactoryBean<User>,并注册到容器中,Bean名称为userFactory。

  • 调用applicationContext.getBean("userFactory") → 返回User类型的实例(FactoryBean生成的对象)
  • 调用applicationContext.getBean("&userFactory") → 返回UserFactoryBean类型的实例(FactoryBean本身)

2. @Qualifier注解中出现"&"的定义与作用

理解了上面的FactoryBean逻辑,这个问题就很好解释了:当你需要注入FactoryBean本身,而不是它生成的目标对象时,就可以在@Qualifier的参数里加上&前缀。

通常我们用@Autowired配合@Qualifier时,注入的是FactoryBean产出的对象,但如果业务场景需要直接操作FactoryBean(比如调用它的自定义方法、修改配置属性),就可以这么写:

@Autowired
@Qualifier("&userFactory")
private UserFactoryBean userFactoryBean;

这种用法确实比较少见,因为大多数情况下我们只关心FactoryBean生成的最终对象,但在一些需要对Bean创建过程做自定义控制的场景中,它就能派上用场。

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:05:50