【发布时间】:2011-09-07 01:36:13
【问题描述】:
我们正在开发基于 Spring 3.0.5 Web MVC 的应用程序。在我们的代码中,我们经常做这样的事情:
@ModelAttribute(ModelKeys.SOME_BEAN)
public SomeBean newSomeBean() {
return new SomeBean();
}
我认为这没有必要。但如果它真的不是,那么我想知道它是如何成功通过这么多代码审查的?据我了解,如果控制器方法想要一个 NEW SomeBean,那么在该方法中使用 @ModelAttribute 注释一个参数就足够了?然后 Spring 将使用默认构造函数来新建所需的 bean 以调用控制器方法,例如:
@RequestMapping(method = RequestMethod.POST)
public String doIt(
@ModelAttribute(ModelKeys.SOME_BEAN) final SomeBean bean,
final BindingResult bindingResult)
{
...
}
这里,Spring 会新建一个 SomeBean 实例并尝试将 POST 数据绑定到其中,对吗?不需要第一个代码sn-p所示的方法吗?请您确认这一点或向我提供您对此的想法吗?如果我继续删除所有这些除了新建一个空 bean 之外什么都不做的方法,我是否会引入风险?
【问题讨论】:
-
是否有可能当前代码的工作方式在早期版本的 spring 上是正确的,比如 2.5.6,现在有了 spring 3.0.5,有新的,更多简洁的方法,做同样的事情?我能想到很多这样的例子,但我对这个特定的例子并不积极。
-
是的,事实上很有可能。我在其他各个领域也看到了很多旧的做法。很可能这种代码在早期版本的 Spring 中是必需的......
标签: java spring spring-mvc javabeans modelattribute