0

我有一个基于 spring 的应用程序,它使用 bean 来描述某些实体的元数据。随着我的应用程序的增长,元数据也会发生变化。

在我的应用程序发布新版本时,我希望将旧的 bean 定义与新的 bean 定义一起保持,并使它们可用于程序。

我最初的想法是在 bean 定义中添加一个名为“Version”的新属性。它的值将对应于一个发布版本。因此,如果我想更改其中一个实体的元数据定义,我会复制粘贴旧定义,进行所需的更改(例如添加一个字段)并更新版本字段。

在代码中,我可以轻松地按版本过滤 bean。

问题

自然,Spring 不允许我拥有两个具有相同 id 的 bean(它不知道我实际上可以通过版本来消除歧义)。似乎我不需要在 bean 定义中添加新属性,而是需要在其名称中对版本进行编码。

这是在 Spring 中执行此操作的正确方法吗(我没有找到任何 OOTB 支持)?有没有其他模式可以解决这个问题?

4

1 回答 1

1

您不能同时拥有两个相同类型相同名称的 bean。您可以在 bean 名称中包含版本后缀,但这可能会破坏您的某些@Autowired注入。

Spring 配置文件(在 3.1 中引入)是一种在替代上下文配置之间快速切换的方法,但同时激活其中两个可能会再次导致冲突。

于 2013-03-10T17:14:47.830 回答