加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 不可变对象和Spring / Sring MVC:正确的选择?

发布时间:2020-12-14 16:24:59 所属栏目:Java 来源:网络整理
导读:我通常设法将我的课程设计为不可变类,所以我在编程压力方面有很多优点. 但是与Spring一起工作时,我有时会注意到,在大多数情况下,框架不鼓励这种设计,赞成经典的JavaBeans设计:默认的构造函数getter / setter. 我真的不喜欢JavaBean设计的对象,因为他们的疯
我通常设法将我的课程设计为不可变类,所以我在编程压力方面有很多优点.

但是与Spring一起工作时,我有时会注意到,在大多数情况下,框架不鼓励这种设计,赞成经典的JavaBeans设计:默认的构造函数getter / setter.

我真的不喜欢JavaBean设计的对象,因为他们的疯狂的可变性.
所以我想知道我是否缺少一些东西

我尽量让我的课堂设计尽可能优雅和可重复使用,但框架需要改变这个设计或允许它,但是在一个困难的方式…

这是怎么回事?

解决方法

对于Web表单数据绑定(即形式POST),问题是Java反射在构造函数上很弱,因此难以在没有注释的情况下进行数据绑定.很久以前,我考虑提交一个Bug,Spring数据绑定应该利用被忘记的 @ConstructorProperties(iirc我自己调查补丁,但是这很复杂,会打破很多事情).有人应该可以提交功能请求.

BTW我在谈论web数据绑定(而不是依赖注入),因为Spring已经很长时间支持基于构造函数的DI(不可变对象需要基于构造函数的注入).实际上,我会说基于构造函数的注入或(静态方法工厂)正在成为传统的getter / setter组件的首选方法(您可以看到这在许多Spring类中多年来一直转向final和constructor的变化).

无论如何,我能够使用Jackson https://gist.github.com/agentgt/4458079对不可变对象进行Web数据绑定

(尽管它使用Jackson来数据绑定请求不一定是JSON)

你可能还想看到Spring Webflow DataBinding to immutable objects via a constructor?我原来想到的想法,并有更多的信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读