Blossom有一个完整的 webapp 设置示例。看看那里的 web.xml 和 applicationContext.xml。
该示例基于magnolia-empty-webapp项目,该项目旨在作为您可以构建的起点。
在示例中,您将看到通常的 Spring 侦听器不在 web.xml 中,并且其中也没有 DispatcherServlets。相反,启动 spring 的任务由 samples 模块完成。该模块还创建了一个 BlossomDispatcherServlet,用于在渲染过程中渲染模板和段落。这样做的原因是,当 Magnolia 启动时,它将进入安装/更新模式并显示安装 UI。此时您不希望 Spring 已初始化,因为如果您有依赖于 Magnolia 的 bean,当 Magnolia 未准备好时它们将无法启动。因此,Spring 是由模块启动的。
但是,如果您的 bean 不依赖于 Magnolia,那么您可以安全地将 Springs 侦听器添加到 web.xml 并从模块中启动 BlossomDispatcherServlets。
可能有助于了解的另一件事是 Magnolia 使用过滤器进行渲染,并且该过滤器将处理所有进入的请求,除非它们被排除在外。因此,如果您将 servlet 添加到 web.xml,您需要从 Magnolias 过滤器中排除它们的 url 模式。
另一个更直接的选择是将您的 servlet 添加到您的模块描述符 xml 文件中。然后 Magnolia 会从过滤器中提取它们并调用它们。模块描述符的文档在这里。
因此,总而言之,我建议使用模块启动 Spring 并将 servlet 添加到模块描述符 xml。在 web.xml 中配置内容也是一个可行的选项,但您需要考虑它与 install/update -phase 和请求路由的交互方式。