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

Spring MVC: form-backing bean populating through constructor?

我想知道在接收 POST 数据(无论来自系统还是 Web 表单)时是否可以通过构造函数注入填充 bean。我想知道这是否比拥有大量 setter 更好,并且这是否会产生一些我不知道的不良副作用。

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

这是一个明智的想法,还是 setter-此处的注入最佳实践 ^^"

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

作者使用了自定义的 WebArgumentResolver。基本上,您手动选择到达的 post 数据并调用 bean 的构造函数来填充它的字段。
此外,在评论部分提到您也可以使用 Spring DataBinder class。关于 binder.initDirectFieldAccess(); 的提示是一个值得知道的评论。

这样可以很容易地瘦身我的 bean,所以它不再需要伪装成一个对象,尽管它是一个数据结构。

考虑到这似乎是一种利用不可变对象的完全可行的方法,我得出结论认为它也可以满足我的目的。虽然我可能不会让我的 bean 不可变,但用大量的 setter 和 getter 污染代码是无利可图的,即使可以通过构造函数填充字段。