我有一个基于spring的应用程序,它使用bean来描述某些实体的元数据。随着应用程序的增长,元数据也会发生变化。
在我的应用程序的新版本发布后,我希望将旧bean定义与新版本一起维护,并使它们可用于该程序。
我最初的想法是在bean定义中添加一个名为“Version”的新属性。其值对应于发布版本。因此,如果我想更改其中一个实体的元数据定义,我会复制粘贴旧定义,进行所需更改(例如添加字段)并更新版本字段。
在代码中,我可以轻松地按照版本过滤bean。
问题:
当然,Spring不允许我有两个具有相同id的bean(它不知道我实际上可以通过版本消除歧义)。似乎不是在bean定义中添加新属性,而是需要在其名称中对版本进行编码。
这是在Spring中执行此操作的正确方法(我没有找到任何OOTB支持)?还有其他模式可以解决这个问题吗?
答案 0 :(得分:1)
您不能同时拥有两个相同类型和相同名称的bean。您可以在bean名称中包含版本后缀,但这可能会破坏您的@Autowired
次注入。
Spring配置文件(在3.1中引入)是一种在备用上下文配置之间快速切换的方法,但同时激活其中两个配置可能会再次导致冲突。