gpt4 book ai didi

java - 非 spring web 应用程序是否可以并行 Spring-MVC 应用程序?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:20:30 25 4
gpt4 key购买 nike

我有一个非常庞大的 Tomcat 应用程序。对业务非常重要(真正赚钱)。但它是遗留的 Java 代码。意思是,JSP(有很多 Javascript、Java 代码)、Servlets(有几千行代码)等等。我们想摆脱这种蹩脚的代码。现在请求另一个应用程序(不同的目的,不同的功能)。我们需要在另一个上下文根/NewApp 中使用它,比如在遗留应用程序目录结构下。就像一个迷你网站。它会有一个不同的 URL,甚至可以服务于几个虚拟主机。

我们不想扩展遗留代码。我们希望转向更好的技术和更好的做事方式。我们强烈支持 Spring(tiles、jackson 等)以及它必须提供的所有东西,包括 portlet。因此,我们正在考虑将 DispatcherServlet/ContextLoaderListener/configLocation 等引入到遗留应用程序 web.xml 中并同时拥有一个 spring 应用程序的可能性。

主要原因是新应用严重依赖遗留服务和库。

  1. 这种和平共处可能吗?
  2. 我们可能面临哪些挑战?
  3. 能否向我们指出任何示例配置?

不幸的是,我们无法将它们分开。感谢您对此的洞察力。

谢谢!!

最佳答案

我们前段时间经历了一个类似的用例,同时将中等规模的应用程序从 EJB 2.1 迁移到 Spring。在很长一段时间内,Spring bean 都与 EJB 共存。我们首先在依赖层次结构中选择叶子,以便 Spring bean 依赖于 EJB,而不是相反。这工作得很好,由于 Spring 代理和依赖注入(inject),bean 像调用任何其他 bean 一样调用 EJB。

在同一个应用程序中,我们为新页面同时使用了 Struts 1 和 Wicket(该死,Struts 页面中甚至还有 Wicket iframe!),我们甚至同时使用了基于 JDBC 的遗留持久性解决方案和 JPA。一切顺利。

注意事项:

  1. 还是一个应用,注意后端缓存

  2. 像对待 Spring beans 一样对待遗留服务。构建一些桥接器/代理/适配器,像注入(inject)其他 bean 一样注入(inject)遗留服务。不依赖遗留 API(我想象一些单例、工厂、JNDI 查找)

  3. 测试新旧边界将很困难,准备好迎接大量 mock 。

  4. 想想网络安全,你能否轻松地集成这两个“应用程序”?

  5. 让我们面对现实吧,您永远无法用新技术完全重写旧代码。到那时,新技术也会变旧,新的开发人员也会加入。但是每次都要尝试一点一点地提高旧代码的质量。重构可以创造奇迹!

配置没有什么特别的。认为 Spring 必须统治您的整个应用程序是一种误解。它可以用作轻量级、薄的附加组件,与您的应用程序的其余部分相邻。

关于java - 非 spring web 应用程序是否可以并行 Spring-MVC 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13052542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com