【问题标题】:migrating a large-scale, poorly structured Java system to Spring application framework将大规模、结构不佳的 Java 系统迁移到 Spring 应用程序框架
【发布时间】:2025-12-13 12:10:02
【问题描述】:

我正在寻找有关迁移 Java 系统的开发故事/经验 到 Spring 应用程序框架。我们的目标是 bean 容器和 Spring 的依赖注入的好处。我们当时没有考虑 Spring MVC 或其任何其他特定组件。

我们的系统目前没有使用任何类型的 bean 容器。全部都是纯 Java —— 也没有 JEE。

它有自己的内部构建的服务引擎,用于管理 Db 服务, 内存缓存、会话管理、配置和某些特定于产品的组件。 更重要的是,它的结构很差。非常糟糕的封装——需要大量的重构, 消除重复和未使用的代码,修复错误。 我们的大量开发工作都在修复错误,而不是结构性的——使其成为 甚至进一步恶化。这是一个已有 10 多年历史的系统,并且是围绕其原始架构构建的。

我们甚至不确定是否要先处理其现有结构 然后期待得到春天的好处, 或者同时进行。

对我来说,在 Spring 上从头开始构建一个新架构,它实现了逻辑而不是结构 目前的系统是最好的。但是,这可能/不可行,因为它不会在 为高层管理人员提供了一个近乎足够的未来。

我会感谢直接/间接参考的意见、经验和其他意见。

TIA。

//======================================

编辑:

所以 - 简而言之,这是关于“如何将恐龙迁移到 Spring”。这是一个战略问题——而不是像如何/在哪里这样的技术迁移 组织/定义/集成特定组件。

【问题讨论】:

  • @ArthurKharkivskiy thx 但这无济于事。请查看编辑。事实上,我们的 servlet 是最好的功能组件之一。
  • 您有一个架构再造任务。不是针对 Java,而是针对 C++ 的类似问题:请参阅这篇关于如何自动化此类事情的技术论文:semanticdesigns.com/Company/Publications/WCRE05.pdf 这描述了项目进行到一半。在付费墙后面有一篇关于最终结果的论文;如果你想要那个参考,我会挖掘它。
  • 代码库有多大?

标签: java spring architecture migration


【解决方案1】:

我将首先创建一个迁移计划...

  • 将尽可能多的遗留 Java 类/函数转换为 bean 格式。
  • 使用内置 Spring 库(例如数据库访问、安全性等)替换遗留代码和/或使用遗留接口包装 Spring 库以迁移遗留代码
  • 设计一种同时运行旧系统和新系统的方法,同时将元素从旧系统缓慢过渡到新系统

【讨论】:

    【解决方案2】:

    首先,请参阅this 文章。如果您满足服务器迁移的要求,则继续。如果你不这么认为,那就放弃你的计划吧。

    如果您认为只需要更换系统内部的部分部件而不是整个系统,则需要考虑收益是否会超过成本。有一个指导说“如果它有效,请不要更改”,因为对现有代码的任何更改都会增加出错的风险。您确定 Spring 会带来您想到的所有好处吗?此外,为降低风险而启动的测试数量也很昂贵。

    除此之外,如果您仍然坚持需要不惜一切代价进行迁移,我建议您重建与旧系统分开的新系统,同时仍保留旧系统。然后你需要在同一个数据库下部分实现新系统,而不是完全截止。

    【讨论】: