【发布时间】:2018-10-03 23:06:52
【问题描述】:
手动创建对象,即使用new 运算符而不是注册Spring bean 并使用依赖注入被认为是不好的做法?我的意思是,Spring IoC 容器是否必须知道应用程序中的所有对象?如果是这样,为什么?
【问题讨论】:
-
您当然可以使用
new创建对象。但在这种情况下,Spring 不会向这些对象注入任何依赖项,因为 Spring IoC 不会知道该对象已创建。 -
以 POJO 为例。 Spring 不需要知道它们。事实上,按照 Bob 叔叔的建议,您的业务逻辑(以及您的 POJO)应该不知道使用了 Spring(“与框架保持一定距离”)。如果我们谈论 REST 端点、控制器……这些应该通过 DI 连接。
-
@Turing85,在 Spring 实际上几乎所有对象都是 POJO
-
这是不正确的。 Spring 严重依赖注解来检测和配置 bean。 POJO 根据定义在代码上没有任何框架迹象
-
这取决于对象。依赖注入对重对象有好处,但如果是小对象,则不值得努力,只需使用 new 关键字即可。
标签: java spring dependency-injection inversion-of-control new-operator