【问题标题】:Updating legacy Java [closed]更新旧版 Java [关闭]
【发布时间】:2011-10-12 19:44:34
【问题描述】:

我有一个 Java servlet 网站,但没有使用 Spring 甚至 Struts 等任何框架!它确实具有休眠功能,它与常规 sql 一起使用。它也没有单元测试。它使用 cvs 和 ant。服务器只能在 JSP 中运行 Java 1.4。

除此之外,代码结构还算不错。

是否有在代码中添加更多现代功能同时将风险降至最低的好方法?似乎我们可以在新代码中添加一些弹簧特性。并且可能用 Subversion 和 Maven 或其他东西替换 cvs 和 Ant。

是否可以让网站的新部分在 Spring MVC 甚至 JRuby on Rails 中运行?

【问题讨论】:

  • 哦,还有像持续集成这样的实践。有什么好的方法可以开始吗?
  • 当然,看看Jenkins。除了它的 wiki 暂时关闭 :) 它是一个非常受支持和灵活的 CI。你可以下载'Jenkins: The Definitive Guide' PDF 书,同时 Jenkins wiki 应该会唤醒 :)

标签: java legacy


【解决方案1】:
  • 代码结构很好

如果是这样的话,我会先编写几个测试来确保当前的行为/业务保持不变,同时您继续在混合中引入 Spring。

  • 是否可以让网站的新部分在 Spring MVC 甚至 JRuby on Rails 中运行

一切皆有可能,但由于代码已经是 Java,而且正如您指出的“结构良好”,我会选择 Spring。

最容易开始的地方是弄清楚什么取决于什么才能启动“网站”。一旦你有了它,你就已经有了不同的组件(在纸上+在代码中),你可以使用 Spring“starter”应用程序上下文来起草,你可以使用 web.xml 加载:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:META-INF/spring/starter-application-context.xml /WEB-INF/spring/transportes-webflow.xml ... </param-value>
</context-param>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

那是你使用任何 Spring MVC 特性之前。一旦你有了它,看看你是否可以为这个项目定义一个域模型。然后,您可以开始将 Servlet 转换为 Spring MVC 控制器和模型(那些域)。

当您一次移动一步时,运行这些测试,以确保行为仍然可靠。这些可以是简单的 JUnit 测试,也可以是确保“网站”流程完好无损的 Selenium 测试。

  • 它使用 cvs 和 ant

我建议将您的构建架构切换到 Gradle,它确实需要一些学习曲线才能让您了解如何访问构建脚本中的所有内容(这是一件好事),但是真的有回报。

至于CVS,我更喜欢git,但是如果你对SVN感觉很强,你也可以切换到那个。在我看来,git 已成为版本控制系统的标准,就像 Spring 对 Java 开发一样。

  • 它确实有休眠功能,它与常规 sql 一起使用

了解使用regular SQL 的原因。如果这些是性能原因,您可以改用存储过程(可以在 Spring 中使用)。另请参阅使用 Hibernate 的原因,因为它可能会带来额外的复杂性,您可能不需要,并且最好使用简单的 Spring JdbcTemplate

【讨论】:

  • 感谢您提供非常完整的答案!
  • + 1 慷慨的投票使如此详细的答案成为可能。
【解决方案2】:

@tolitius 涵盖了所有基础,除了我建议您在开始任何这些更改之前首先添加 Selenium 测试以涵盖所有主要用例。这将使在较短的迭代周期中添加改进变得更加容易。

【讨论】:

    【解决方案3】:

    为什么你需要做这些提议的事情?如果纯粹是为了保持最新并使用较新的框架,那么我建议不要这样做。

    我认为一个好的开始是在当前代码库下编写单元测试,以帮助将未来更改的风险降到最低。另外,假设项目结构不太复杂,移植到 SVN 应该不会太困难,并且不需要更改任何源代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2011-12-12
      • 2010-12-16
      • 1970-01-01
      相关资源
      最近更新 更多