我们正在使用 Spring MVC 启动一个新项目,并且我们希望摆脱注释驱动的请求/url 映射。我们希望实现以下用例:
用例A
- 用户输入 URL。
- 请求映射处理程序检索映射列表(例如,从数据库),并基于此动态映射列表,它调用相关控制器。
这是因为我们还希望能够执行以下操作:
用例 B
- 我们希望将新的控制器(可能是新的报告模块)加载到 Web 应用程序中,而无需重新部署或重新启动服务器。
- 我们将把这个新的控制器映射到一个 URL 并将其保存在某个地方(很可能是数据库)。
- 我们希望控制器在 Spring 应用程序上下文中注册(由 Spring 管理)。
- 然后我们想在请求映射中使用这个新的控制器。
我们已经初步研究了实现这一点的不同方法,但我们不确定实现这条路线的最佳架构/方法。有几个问题:
- 对于用例 A,我们如何在 Spring MVC 框架内实现这一点(或者如果可能的话)?
- 对于用例 B,是否有一个好的框架或方法能够为 Web 应用程序动态加载和注册?我们粗略地了解了 OSGI,但似乎建议在非 Web 应用程序中使用它。
对于用例 A:
您可以将 url 映射保存在属性文件中,而不是使用 DB,然后使用属性占位符在上下文中使用 xml 配置来初始化 beans。通过这种方式保留在 spring 框架内,您可以避免注释。
对于用例 B:
Tomcat 支持类的动态重新加载,但仅支持类文件中的非结构性更改。但这存在内存泄漏,并且它不会清理类加载器的旧实例,而是创建一个新实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)