Spring MVC:通过构造函数填充的表单支持bean?

时间:2015-06-26 14:54:00

标签: java spring-mvc constructor-injection

我想知道在接收POST数据时是否可以通过构造函数注入填充bean(无论是从系统还是Web表单)。我想知道这是否比拥有大量的安装者更好,如果这可能有一些不好的副作用,我不知道。

我目前在Spring中使用表单支持bean并实现了许多getter / setter,但主要是这个bean用作数据strcuture,只保存和验证注入的内容以提供模板引擎的数据。如果我可以通过构造函数注入所有POST数据,我可以省略所有setter,但同时构造函数将使用大量参数。

这是一个明智的想法,还是这里的二手注射最佳实践^^“

1 个答案:

答案 0 :(得分:0)

我的问题的答案基本上是[post]。尽管博客文章主要涉及不可变对象的处理,但这个概念是可转移的。

作者使用自定义WebArgumentResolver。基本上,您手动选择到达的帖子数据并调用您的bean的构造函数来填充它的字段。
此外,在评论部分中提到您也可以使用Spring DataBinder类。关于binder.initDirectFieldAccess();的提示是一个很有说服力的评论。

通过这种方式,我可以很容易地修剪我的bean,因此它不再需要伪装成一个对象,尽管它是一个数据结构。

考虑到这似乎是一种利用不可变对象的完全可行的方法,我得出结论,它也可能符合我的目的。虽然我可能不会让我的bean变得不可变,但即使通过构造函数可以实现字段填充,使用大量的setter和getter来规范代码也是不合理的。