spring - 寻找使用另一个组件/注释扩展 Spring MVC 的解决方案

标签 spring spring-mvc architecture

假设我有一个在正常模式(浏览器)和其他模式下使用的网站,例如 MobileView 模式(在移动应用程序内)。对于我创建的每个 Controller ,可能有 MobileView 的对应 Controller ,处理相同的 url。

最简单的解决方案是在所有具有 MobileView 逻辑的 Controller 中创建 if。另一种解决方案是使用 MobileView 的对应 url(类似于普通 url)和两个单独的 Controller (可能一个从另一个扩展;或使用其他方式来回收公共(public)代码)

但是,更优雅的解决方案是添加一些额外的注释,例如 @SupportsMobileView(标记一个 Controller ,并告诉应用这将有一个对应的 MobileView Controller )和 @MobileViewController(标记第二个 Controller ,并告诉应用该 Controller 需要在标有@SupportsMobileView 的初始 Controller 之后立即运行)。普通 Controller 和 MobileView Controller 之间的链接将通过它们处理的 url(使用 @RequestMapping 定义)。

是否可以扩展 Spring MVC (A)?在哪里注入(inject)新的注释扫描器(B)和注释处理程序/组件处理程序(C)? MobileView Controller 应该如何执行 (D)

备注 我没有提到这个 MobileView 模式是如何被触发和检测的。我们只是说有一个 Session bool 变量(标志)。

欢迎对任何点 (A)、(B)、(C) 或 (D) 提出批评,以及任何点或整个解决方案的技术提示和替代解决方案。

最佳答案

HandlerInterceptor可用于拦截 RequestMapping 处理。 This是一个如何配置和实现的简单示例。

您可以检查您的 session 变量,并且会有一堆方法允许您进行自定义处理,或者只是将来自普通 Controller 处理的 View 与您的移动 View 交换。

关于spring - 寻找使用另一个组件/注释扩展 Spring MVC 的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18295546/

相关文章:

java - Jodah 故障安全库超时时间比预期要长

java - Spring JMSListener 和 JAXB 编码

spring - 我如何以一种 Restful 方式使用 Spring 3.2 spring-mvc 上传/流式传输大图像

silverlight - 定义可靠的 SIlverlight 4 架构

flutter - 在 Flutter BLoC 架构中放置自定义辅助类的位置

java - Android 应用程序和 (Android) 库存档

java - 使用 CrudRepository 检索多行

java - 如何强制 Spring 框架使用我的日志框架?

java - 无法让 @Secured 在 Spring MVC 中工作

java - Spring 过滤器没有被调用