【问题标题】:Modular web application with Spring and Maven使用 Spring 和 Maven 的模块化 Web 应用程序
【发布时间】:2013-02-03 11:32:15
【问题描述】:

我正在尝试用 Java 设计一个中型 Web 应用程序的架构,我想就如何做得到一些建议。

该项目由一个基础网站和一些模块组成。例如,一个模块提供用户注册,另一个模块提供网络服务,等等......

每当我需要将应用程序交付给新客户时,理想的做法是挑选他想要的模块,做一些主题(css、图像,也许是 jsp)并开发他可能需要的自定义模块(如果有的话) .

我查看了 maven 多模块项目,war overlays,但我发现很难对应用程序进行分区,尤其是在模块配置方面(例如,从模块中合并全局 spring 配置)。有人可以指出这样一个系统的例子吗?提前致谢!

【问题讨论】:

    标签: java maven web-applications spring-mvc modular


    【解决方案1】:

    合并弹簧配置很容易。在每个模块中,在其 /WEB-INF/classes 目录中打包一个 spring 上下文文件。当你覆盖时,依赖中的WEB-INF类中的所有类和资源都会被放到你的应用程序的WEB-INF/classes中。 (ps,如果你打包为 .jar 也可以,但如果你这样做,你将无法覆盖 .jsp 文件)

    那么只需导入它们即可。这最好通过使用设置模式来查找文件来完成。这是一个例子:

    <import resource="classpath*:/module/*-context.xml" />
    

    这将导入与此模式匹配的所有类路径资源。

    基于注释的示例:

    @Configuration
    @ImportResource(value={"classpath*:/module/*-context.xml"})
    public class MyConfiguration { ... }
    

    如果您需要在模块中进行任何 web.xml 自定义,那么 web.xml 配置会给您带来更多麻烦。您当然可以为此使用 servlet 3.0,但它需要正确的服务器进行部署。

    【讨论】:

    • 感谢您的帮助!我认为这里的重点是在可能的情况下跨模块“分段”配置文件。我想我可以只使用一个 web.xml。所以我现在要试一试,看看其他技术配置(休眠、磁贴等)可以做什么。我会更新这个。
    • hibernate 也可以让他们的模型碎片化。用于休眠会话工厂的 spring 工厂 bean 也具有类路径扫描(.hbm.xml 或基于包的扫描)
    【解决方案2】:

    fwiw,经过一些简单的 Spring 导入经验后,我们为 Spring 开发了用于 osgi-less 模块化的小型框架。导入的第一个问题是 bean 名称冲突,您不能在两个上下文中使用同名单例,以及许多其他麻烦.. tbc https://github.com/griddynamics/banshun

    -- 迈克

    【讨论】:

      猜你喜欢
      • 2014-02-17
      • 2012-10-12
      • 1970-01-01
      • 1970-01-01
      • 2019-08-13
      • 2011-03-27
      • 2013-08-15
      • 2016-06-05
      • 2014-01-25
      相关资源
      最近更新 更多