java - 更新遗留 Java

标签 java legacy

<分区>

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

除此之外,代码的结构非常好。

是否有好的方法可以在代码中添加更多现代功能,同时最大限度地降低风险?似乎我们可以在新代码中添加一些 spring 特性。也许用 Subversion 和 Maven 或其他东西替换 cvs 和 Ant。

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

最佳答案

  • 代码结构合理

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

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

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

最简单的起点是弄清楚什么取决于什么才能启动“网站”。一旦你有了它,你就已经有了不同的组件(在纸上 + 在代码中),你可以用 Spring“启动器”应用程序上下文起草它们,你可以用 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 Controller 和模型(那些域)。

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

  • 它使用 cvs 和 ant

我会建议将您的构建架构切换到 Gradle,它确实需要一点时间或学习曲线来让您全神贯注地访问构建脚本中的一切(这是一件好事),但是它真的得到了返回。

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

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

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

关于java - 更新遗留 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7745639/

相关文章:

c++ - 遗留标准 C 库头文件和重载的 C++ 函数

java - 创建对象枚举

.net - 列出所有可用的 .NET 程序集

java - 通过 Proguard 从 apk 中删除 Activity

java - "The selection cannot be run on any server"

android - 为什么从 API 18 开始,API 演示被视为 "legacy"?

c++ - 将遗留 C 代码集成到多线程 C++ 代码中

java - 使用语句时出现 MySQL 1064 语法错误

javascript - 使用 Google Translate API 进行翻译时排除 HTML 标签

java - 执行 sudo 命令时发现意外输出