spring - 如果我关心 IOC,如何最好地在 Spring MVC 中修改我的模型

标签 spring spring-mvc inversion-of-control

我正在使用 Spring MVC 构建应用程序。我想为应用程序中的每个 Controller 对我的模型进行某些更改。特别是,我想将某些额外数据插入模型中,这些数据将出现在应用程序的所有页面中。

我可以通过几种方式做到这一点:只需在每个 Controller 的末尾添加数据,使用 Model 的子类来添加我的额外数据,使用 ModelAndView 的子类来包装我的 Model,使用 VelocityView 的子类来包装在使用之前先建模……我相信还有其他选择。

但我有一个“优雅”约束:我不想在每个 Controller 中编写代码,我希望在 one-and-only-one 中定义此行为地方。理想情况下,它将由我的 IOC bean 配置文件控制。

有没有人推荐如何优雅地实现这一目标?

最佳答案

切面是一种很好的方法,但是 Spring MVC 使它变得更加容易——您可以定义一个 HandlerInterceptor每次处理请求之前或之后都会调用它。在 HandlerInterceptor postHandle 方法中(在实现 HandlerInterceptor 接口(interface)的类中),您可以将数据添加到 ModelAndView。您可以在配置文件中定义应拦截哪些处理程序。

关于spring - 如果我关心 IOC,如何最好地在 Spring MVC 中修改我的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/167609/

相关文章:

java - 如何自定义 DefaultHandlerExceptionResolver 逻辑?

java - 如何使用 Corda-Spring-Webserver 实现查询过滤?

java - 有没有办法将非 bean 样式对象用作 spring 表单的模型属性?

java - 为什么 Avalon-Framework 被关闭了?

inversion-of-control - CaSTLe Windsor 是否允许解析值类型?

c# - DependencyInjectionConfig 中的 MediatR 问题与 Autofac

java - 返回泛型类型时出现 ClassCastException

java - 在我的 spring 静态资源上读取文件始终为 null

hibernate validator : @Email accepts ask@stackoverflow as valid?

java - 无法在 hibernate 映射中加载数据