1

我正在将现有的基于 jsp/servlet/portlet(jetspeed) 的应用程序迁移到 spring。我和我的同事是唯一设计、编码、部署和维护应用程序的开发人员(我列出职责的原因不是为了炫耀,而是为了解释我的责任和我的行为的影响)。想要在意识到为时已晚之前对我的初始应用程序设计和架构保持警惕。现有的 Web 应用程序已在全球范围内使用。我在设计新应用程序时遇到了一些问题。

1)将应用程序压缩到的 webapps 数量:目前,我有 5 个 webapps。如果需要,所有这些都可以合并到一个 web 应用程序中,这有助于避免在迁移到 spring 时在它们之间共享数据的额外编码。但是,不想在可扩展性和维护上妥协。例如,不想为单个类更改部署整个战争文件。我的问题:在设计和选择一个或多个 webapp 时需要考虑哪些因素?

2)webapps之间的数据共享:如果有多个webapp,需要共享数据。我正在考虑不那么抽象的解决方案。我对 Spring 比较陌生,目前通过两个上下文之间的过滤器和请求对象在 webapps 之间共享数据。能够找到一些帖子,例如( 您如何在不同的 Spring 上下文之间共享 Spring bean?),但在我意识到 Spring 之前,不想最终陷入过多的抽象。但是,我再次意识到,在项目的后期实施变更相对困难。我的问题:在不同的 spring 上下文之间共享数据的任何其他方式具有较少的抽象?

3) 要使用的弹簧版本。肯定是最新的,因为它的功能,但想选择一个有更多社区支持的。我认为在不久的将来我不需要在最新版本中使用 spring 的所有高级功能。

4) 视图:我计划通过转换现有的 JSP 来使用 JSTL 作为表示层,因为我已经对它进行了一些工作并且是直接的(较少抽象)。我的问题:除 JSTL 之外的任何其他技术,如 JSF 和您对 JSTL 的建议。

谢谢你的时间。

4

2 回答 2

0

回答你的问题 2。如果你有 spring bean 在不同的应用程序之间共享。我会考虑为它定义一个单独的模块。例如,如果您有 webapp1、webapp2,它们使用公共 bean 来验证某些业务规则。您可以创建一个名为 validation-manager 的模块,该模块将打包为 jar 文件并作为 webapp1 和 webapp2 的依赖项包含在内。

要让 webapp1 和 webapp2 都可以访问 jar 中包含的公共 bean,您可以在应用程序上下文中配置这些 bean,如下所示:

验证管理器应用程序上下文配置

<!-- beans definitions shared between webapp1 and webapp2 -->
<bean id="userValidation" class="com.example.UserValidation" />
<bean id="orderValidation" class="com.example.OrderValidation" />

webapp1 配置

<!-- import beans definitions for validation-manager -->
<import resource="classpath:applicationContext-validation-manager.xml" />

<!-- beans definitions specific to webapp1 -->

webapp2 配置

<!-- import beans definitions for validation-manager -->
<import resource="classpath:applicationContext-validation-manager.xml" />

<!-- beans definitions specific to webapp2 -->

这个想法是尽可能地模块化你的代码,以便能够在不同的 webapps 中重用常见的功能。

希望有帮助。

于 2013-08-14T20:25:44.600 回答
0

这是尝试回答您的问题;

  1. 只要您有良好的版本控制和发布管理周期,单独的 webapps 确实可以更容易地维护和“存储”更改的效果。我的建议是通过一次将一个应用程序迁移到“符合 Spring 的”样式而不是采用“大爆炸”方法来允许过渡迁移。

  2. 在数据共享方面,您需要考虑几件事,以及您是否将每个单独的网络应用程序视为“服务”(不仅能够与其他网络应用程序共享信息,而且能够与未来的应用程序共享信息) ) 或作为单独的已知/耦合网络应用程序。如果您选择前者,那么 RESTful 服务和消息服务有多种选择。如果您选择后者,那么您正在寻找稍微耦合的数据共享方法。无论如何,您可能希望自己熟悉Spring Integration作为在应用程序之间交换消息/数据的一种方式,因为它从消费应用程序和消息传递管道中抽象出来。为理论。

  3. 选择最新的;从 3.1 到 3.2 有一点过渡,但是 3.2 中包含一些非常简洁的 Spring Web/MVC 测试工具,它们将真正有助于您的开发。(看看这个

  4. JSTL 和 JSF 有不同的交互模式,所以如果你在当前的应用程序中使用 JSP 和 JSTL,Spring MVC 很好地支持它并且有很多可用的资源。(没有反对 JSF,只是为什么要引入额外的复杂性)

于 2013-08-14T16:18:08.043 回答