更新旧版Java

时间:2011-10-12 19:44:34

标签: java legacy

我有一个Java servlet网站,但不使用像Spring或甚至Struts这样的框架!它确实有hibernate,它与常规sql一起使用。它也没有单元测试。它使用cvs和ant。服务器只能在JSP中运行Java 1.4。

除此之外,代码结构合理。

是否有很好的方法可以为代码添加更多现代功能,同时将风险降至最低?看起来我们可以在新代码上添加一些弹簧特性。也许用Subversion和Maven替换cvs和Ant,或者用其他东西替换。

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

3 个答案:

答案 0 :(得分:4)

  • 代码结构合理

如果是这种情况,我会首先编写几个测试,确保当前的行为/业务保持不变,同时继续并将Spring引入混合中。

  • 是否有可能让网站的新部分像Spring MVC或甚至是Rails上的JRuby一样运行

一切皆有可能,但由于代码已经是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 to Java开发一样。

  • 它确实有hibernate,它与常规sql一起使用

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

答案 1 :(得分:0)

@tolitius已涵盖所有基础,但我建议您在开始任何这些更改之前首先添加Selenium测试以涵盖所有主要用例。这样可以更容易地在短迭代周期中添加改进。

答案 2 :(得分:0)

为什么你需要做任何这些提议的事情?如果它纯粹是为了当前并使用更新的框架,那么我会建议反对它。

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