我见过的一种用法如下:您有给定接口 ( SomeBean) 的两个实例:一个用于环境 A,一个用于环境 B。因此您定义了两个 bean:一个名为“someBeanForA”,另一个名为“ someBeanForB”。
必须注入这个 SomeBean 的 bean 不知道它们必须使用哪一个:这取决于环境。所以他们使用别名:
@Autowired
@Qualifier("someBeanAlias")
private SomeBean someBean;
Run Code Online (Sandbox Code Playgroud)
部署到环境A时,XML文件中的别名指向someBeanA。部署到环境B时,XML文件中的别名指向someBeanB。
我认为参考文档很好地解释了它:
在bean定义本身中,您可以为bean提供多个名称,方法是使用id属性指定的最多一个名称和name属性中的任意数量的其他名称.这些名称可以是同一个bean的等效别名,并且在某些情况下很有用,例如允许应用程序中的每个组件通过使用特定于该组件本身的bean名称来引用公共依赖项.
但是,指定实际定义bean的所有别名并不总是足够的.有时需要为其他地方定义的bean引入别名.在大型系统中通常就是这种情况,其中配置在每个子系统之间分配,每个子系统具有其自己的一组对象定义.在基于XML的配置元数据中,您可以使用该元素来完成此任务.
一个特定的示例可能是您必须在单点登录模块中为多个应用程序定义身份验证的入口点.您可以在单个Spring Bean定义中定义它,并在特定应用程序中将其别名,以将其用作身份验证入口点.
| 归档时间: |
|
| 查看次数: |
16639 次 |
| 最近记录: |