gpt4 book ai didi

java - 可变性和 Spring

转载 作者:IT老高 更新时间:2023-10-28 13:49:32 25 4
gpt4 key购买 nike

我目前在一家大量使用 Spring Dependency Injection 的商店工作时正在重新阅读“Effective Java”。在阅读 Bloch 的书时,人们不禁会想起他对类中不变性的强调(他多次声明类应该尽可能不可变)。我不禁感到这与 Spring Dependency Injection(以及大多数 DI 引擎)对 javabeans 标准的依赖直接冲突。阅读“Spring in Action”中关于 DI 的章节似乎会让 Bloch 畏缩,因为它们的可变类由在您的权限范围之外实例化的对象组成,这些对象本身可能是可变的。

是不是 Bloch 的想法对 Spring 来说太新奇了? Spring模型被破坏了吗? Bloch 关于不变性的立场是否仅适用于编写库代码?在编写 Spring 代码时,我应该编写具有大量 getter 和 setter 的灵活对象还是将所有内容加载到构造函数中?

最佳答案

事实上,spring bean 在思想上是不可变的,即使你没有强制执行。

您只能为通过构造函数注入(inject)初始化的 final 字段提供 getter。

通常您不这样做,但您永远不应该重新分配由 DI 框架注入(inject)的 bean 的字段。这是因为除了它们的依赖项(并且它们的范围是单例的)之外,spring bean 通常不持有任何状态。当然,也有一些异常(exception),例如原型(prototype)和请求范围的 bean,它们很少见(例如,在 2 个大项目和 2 个中型项目中,我只使用了 1 个原型(prototype)范围的 bean)

关于java - 可变性和 Spring ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5732195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com