首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Spring bean别名用法

Spring bean别名用法
EN

Stack Overflow用户
提问于 2012-11-05 01:18:22
回答 4查看 18.5K关注 0票数 16

我知道在spring中bean别名是什么意思。但是我想知道使用别名的用例。为什么有人要使用别名而不是它的名称来引用bean呢?

提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-05 01:27:42

我看到的一个用法如下:您有两个给定接口(SomeBean)的实例:一个用于环境A,另一个用于环境B。因此,您定义了两个bean:一个名为"someBeanForA",另一个名为"someBeanForB“。

必须注入此SomeBean的bean不知道它们必须使用哪一个:这取决于环境。所以他们使用别名:

代码语言:javascript
复制
@Autowired
@Qualifier("someBeanAlias")
private SomeBean someBean;

在部署到环境A时,XML文件中的别名指向someBeanA。在部署到环境B时,XML文件中的别名指向someBeanB。

票数 7
EN

Stack Overflow用户

发布于 2012-11-05 01:27:44

我认为reference documentation很好地解释了这一点:

在bean定义本身中,您可以为bean提供多个名称,方法是使用id属性指定的最多一个名称和

属性中的任意数量的其他名称。这些名称可以是同一bean的等效别名,并且在某些情况下非常有用,例如允许应用程序中的每个组件通过使用特定于该组件本身的bean名称来引用公共依赖项。

但是,指定实际定义bean的所有别名并不总是足够的。有时需要为在其他地方定义的bean引入别名。这通常是在大型系统中的情况,其中配置在每个子系统之间拆分,每个子系统具有其自己的对象定义集。在基于XML的配置元数据中,您可以使用元素来完成此操作。

具体的示例可能是,您必须在多个应用程序的单点登录模块中定义身份验证的入口点。您可以在单个Spring Bean定义中对其进行定义,并在特定应用程序中为其设置别名,以便将其用作身份验证入口点。

票数 6
EN

Stack Overflow用户

发布于 2012-11-05 01:30:04

springframework docs本身就有一个例子。

作为一个具体的示例,考虑组件A在其DataSource片段中定义了一个名为componentA-dataSource的XML的情况。然而,组件B希望在其XML片段中将DataSource称为componentB-dataSource。主应用程序MyApp定义了自己的XML片段,并从所有三个片段组装了最终的应用程序上下文,并希望将DataSource称为myApp-dataSource.myApp-dataSource.xml。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13220919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档