java - 如何同时管理多个版本的类?

标签 java classloader software-product-lines

我们正在实现一个企业财务Web应用软件。我们使用 spring、hibernate、oracle(DB)、JSF。需求在软件的维护阶段发生变化,并且由于以前版本的软件的兼容性,我们必须同时拥有某些实体(还有管理器、表单……类)的多个版本。这种类的更改包括:添加/删除字段、更改字段、添加/删除类……一般来说,此问题是同时运行多个版本的软件。请帮我找到解决这个问题的方法。

澄清:

这个问题与软件产品线中的“时间变化”类似(更多信息请参见elsner_vamos2010)。这意味着我们可能同时拥有一个类的多个版本,并且我们必须使用(或日期)参数获取类。在每个日期,必须使用类的一个版本,因为与该日期的程序状态兼容。我们使用 XML 文件在 Bean 类上解决这个问题,并获取带有日期的类版本。因此,程序知道必须为该程序状态运行什么 bean(其他实体的日期)。

但是对于spring中的其他对象类型如entity、jsp、form我们就无法解决吗?

最佳答案

您可以在不同的 WAR/EAR 中部署项目的不同版本。在这种情况下,您的容器将自动处理它们。每个war都会加载自己的类加载器,因此同一个类(包和类名)的不同版本不会交叉。 这个选项足够好吗?

关于java - 如何同时管理多个版本的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7498823/

相关文章:

java - hibernate什么时候发布实体列表?

为两种不同设备开发代码的 git 最佳实践

Javascript团体开发流程

scala - 在 SBT 中为模块依赖项使用自定义类加载器

java - 如何使用递归将对象添加到已知路径的父级中

java - 我的二进制搜索算法实现有什么问题?

java从字符串: org. json.JSONException创建JSONArray:错误字符 ':'

java - 如何使用反射来检查使用不同类加载器加载的类的非静态字段?

jakarta-ee - (如何)从 $CATALINA_{HOME|BASE}/lib 中的类访问/WEB-INF/{lib|classes} 中的 jar