4

我们正在使用 Spring MVC 开始一个新项目,我们希望摆脱注释驱动的请求/url 映射。我们希望实现以下用例:

用例 A

  1. 用户输入 URL。
  2. 请求映射处理程序检索映射列表(例如从数据库中),并基于此动态映射列表调用相关控制器。

这是因为我们也希望能够做到以下几点:

用例 B

  1. 我们希望将新的控制器(可能是新的报告模块)加载到 Web 应用程序中,而无需重新部署或重新启动服务器。
  2. 我们将把这个新的控制器映射到一个 URL 并将它保存在某个地方(很可能是 DB)。
  3. 我们希望控制器在 Spring 应用程序上下文中注册(由 Spring 管理)。
  4. 然后我们想在请求映射中使用这个新的控制器。

我们已经初步了解了实现这一点的不同方式,但我们不确定实现这条路线的最佳架构/方法。几个问题:

  1. 对于用例 A,我们如何在 Spring MVC 框架中实现它(或者如果可能的话)?
  2. 对于用例 B,是否有一个好的框架或方法可以为 Web 应用程序动态加载和注册它?我们对 OSGI 进行了粗略的了解,但似乎建议在非 Web 应用程序中使用它。
4

2 回答 2

1

对于用例 A:代替 DB,您可以将 url 映射保留在属性文件中,然后使用属性占位符在上下文中使用 xml 配置初始化 bean。这样保留在 spring 框架内,可以避免注释。

对于用例 B:Tomcat 支持类的动态重新加载,但仅支持类文件中的非结构更改。但这有内存泄漏,并且它不会清理类加载器的旧实例,而是创建一个新实例。

于 2013-11-12T05:51:53.203 回答
0

使用 spring-mvc-router API 是可以实现的。

请在 Spring MVC 3.0 中检查以下链接 url-action 映射和路由

这里可以使用 .conf 文件将 URL 配置为 controller.method,但这可以使用 java 配置来实现,我到目前为止还没有尝试过。

此外,如果选择了 xml 配置,则检查属性“autoReloadEnabled”,但不建议用于生产。

希望这可以帮助!!!

于 2014-04-01T19:31:31.183 回答