【发布时间】:2013-07-30 22:48:39
【问题描述】:
我目前在一家大量使用 Spring Dependency Injection 的商店工作时正在重新阅读“Effective Java”。在阅读 Bloch 的书时,人们不禁会想起他对类中不变性的强调(他多次声明类应该尽可能不可变)。我不禁感到这与 Spring Dependency Injection(以及大多数 DI 引擎)对 javabeans 标准的依赖直接冲突。 阅读“Spring in Action”中关于 DI 的章节似乎会让 Bloch 畏缩,因为它们的可变类由在您的权限范围之外实例化的对象组成,这些对象本身可能是可变的。
是不是 Bloch 的想法对 Spring 来说太新奇了? Spring模型被破坏了吗? Bloch 关于不变性的立场是否仅适用于编写库代码?在编写 Spring 代码时,我应该编写具有大量 getter 和 setter 的灵活对象还是将所有内容加载到构造函数中?
【问题讨论】:
-
布洛赫没有说“永远不要让事情变得可变”,他说“不要让他们变得比必要的更可变”。如果您的框架需要一定程度的可变性,那么这就是您必须忍受的。
-
在关于可变性、伸缩构造函数和构建器模式的项目中,他有点破坏了 javabeans 标准(将其称为过时),但该标准是 Spring 的基础,这是否意味着春天过时了吗?
-
spring 不依赖 javabeans 标准。
-
books.google.com/… - 抱歉链接。如果您阅读本文,您会发现“Spring 使用 JavaBeans 规范来形成其 DI 配置模型的核心”的引用。第 4 页第 3 段
-
我编辑了上面的帖子。在我放置 MVC 的所有地方,我的意思是 DI
标签: java spring immutability