为什么在另一个配置中允许在一个配置中声明的覆盖spring bean?

时间:2014-11-29 05:42:28

标签: java spring

我开始学习Spring并遇到了Spring的一个特性 - overriding spring bean declared in one xml config in another config

我不明白这个功能在哪里有用。这似乎是不合逻辑的,因为相同的容器将使用两个不同的xml配置,即使有两个具有相同ID的bean,而不是报告歧义,它默认为最后一个。

是否存在实际可行的实际情况?这是好习惯吗?

1 个答案:

答案 0 :(得分:1)

有理由说明这可能对实例有用

  • 测试
  • 开发组件库

测试

测试时,您可以选择覆盖1个或多个bean。例如,DataSource您可能不想测试数据库的生产实例。但也许是内存中的一个或一个专门用于测试。为此,您可以覆盖DataSource bean。

开发组件库

您可以为库提供启动配置,并允许用户覆盖某些组件或让它们实现接口。这样的一个示例是不同的Spring组合项目如何工作(Spring Security,Spring Batch)及其默认配置。

此外,当覆盖bean时,spring会在启动应用程序时记录此信息。