我有一个 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 测试,以确保“网站”流程仍然完好无损。
我会建议将您的构建架构切换到 Gradle,它确实需要一点时间或学习曲线来让您全神贯注地访问构建脚本中的一切(这是一件好事),但是它真的得到了返回。
至于 CVS,我更喜欢 git
,但如果你对 SVN 有强烈的感觉,你也可以切换到它。 git
,在我看来,成为版本控制系统的标准,就像 Spring 成为 Java 开发一样。
- 它确实有 hibernate,它与常规 sql 一起使用
了解使用常规SQL
的原因。如果这些是性能原因,您可以改用存储过程(可以在 Spring 中使用)。另请参阅使用 Hibernate
的原因,因为它可能会带来额外的复杂性,而您可能不需要,使用简单的 Spring JdbcTemplate
会更好。