我有一个基于spring的应用程序,它使用bean来描述某些实体的元数据。随着我的应用程序的增长,元数据也随之改变。在同一个应用上下文中持有同一个spring bean的两个不同版本
一旦我的应用程序发布了新的版本,我想维护旧的bean定义以及新的bean定义,并使它们可用于程序。
我最初的想法是将新属性添加到名为'Version'的bean定义中。它的值将对应于发行版本。因此,如果我想更改其中一个实体的元数据定义,我复制粘贴旧定义,进行必要的更改(例如添加字段)并更新版本字段。
在代码中,我可以很容易地通过它们的版本筛选bean。
问题:
自然,春天不会让我有两个bean使用相同的ID(它不知道,我其实可以通过版本歧义)。看起来,我不需要向bean定义中添加一个新属性,而需要在名称中编码该版本。
这是在春天这样做的正确方法(我没有找到任何OOTB支持)?有没有其他模式可以解决这个问题?
我不明白你想做什么,所以这可能是无关紧要的,但是你的bean的第一个“版本”的继承和实例化父亲和儿子不会解决这个问题? – benzonico 2013-03-10 13:25:25
@benzonico,不,因为我不一定要继承一切。例如我可能想删除字段或拆分字段(这相当于删除和添加) – Vitaliy 2013-03-10 13:38:56