Spring mvc 仅用于一个处理程序方法的Spring@ModelAttribute

Spring mvc 仅用于一个处理程序方法的Spring@ModelAttribute,spring-mvc,command-objects,Spring Mvc,Command Objects,是否可以只为特定的处理程序方法调用@ModelAttribute方法,并且只为一个处理程序方法调用提供命令对象?不是针对特定控制器中的每个处理程序方法?我使用的是SpringWebPortletMVC,但应该是相同的 因为在一个控制器内的每个处理程序方法调用都会调用这个for循环,并且隐式模型会提供给每个进入视图的请求 for (Method attributeMethod : this.methodResolver.getModelAttributeMethods()) {

是否可以只为特定的处理程序方法调用@ModelAttribute方法,并且只为一个处理程序方法调用提供命令对象?不是针对特定控制器中的每个处理程序方法?我使用的是SpringWebPortletMVC,但应该是相同的

因为在一个控制器内的每个处理程序方法调用都会调用这个for循环,并且隐式模型会提供给每个进入视图的请求

for (Method attributeMethod : this.methodResolver.getModelAttributeMethods()) {
                Method attributeMethodToInvoke = BridgeMethodResolver.findBridgedMethod(attributeMethod);
                Object[] args = resolveHandlerArguments(attributeMethodToInvoke, handler, webRequest, implicitModel);
                if (debug) {
                    logger.debug("Invoking model attribute method: " + attributeMethodToInvoke);
                }
                String attrName = AnnotationUtils.findAnnotation(attributeMethodToInvoke, ModelAttribute.class).value();
                if (!"".equals(attrName) && implicitModel.containsAttribute(attrName)) {
                    continue;
                }
                ReflectionUtils.makeAccessible(attributeMethodToInvoke);
                Object attrValue = attributeMethodToInvoke.invoke(handler, args);
                if ("".equals(attrName)) {
                    Class resolvedType = GenericTypeResolver.resolveReturnType(attributeMethodToInvoke, handler.getClass());
                    attrName = Conventions.getVariableNameForReturnType(attributeMethodToInvoke, resolvedType, attrValue);
                }
                if (!implicitModel.containsAttribute(attrName)) {
                    implicitModel.addAttribute(attrName, attrValue);
                }
            }

如果您需要这种级别的细粒度控制,那么您需要重构代码,即将处理程序方法移动到自己的类中。SpringMVC让这变得非常简单,对这种重构应该没有限制。

那么我就失去了它的目的。我们可以简单地在控制器“MyBean initBean()”中创建一个方法,该方法最终进行初始化并返回bean实例,然后我们可以将其添加到“模型”中,效果是一样的