java – 不可变对象和Spring / Sring MVC:正确的选择?
我通常设法将我的课程设计为不可变类,所以我在编程压力方面有很多优点. 但是与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?我原来想到的想法,并有更多的信息. (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |