繁体   English   中英

春天 - 正在使用新的不良做法?

[英]Spring - is using new a bad practice?

手动创建对象,即使用new运算符而不是注册Spring bean并使用依赖注入被认为是不好的做法? 我的意思是, Spring IoC容器是否必须知道应用程序中的所有对象? 如果是这样,为什么?

您希望Spring为以下类创建bean

  • 你想/需要在其他bean中注入实例
  • 您需要在自己的实例中注入bean(或依赖项)。
  • 你希望他们受益于Spring功能(实例化管理,事务管理,代理类Spring赋予权力,如Repository / Interceptor等等......)

服务,控制器或拦截器就是它们的一个例子。
例如,控制器可能需要注入服务或拦截器。
同样,您不希望通过实现每个类的单例模式来处理这些类的实例化。 这可能容易出错并需要锅炉板代码。
所以你希望所有这些类都是由Spring管理的bean。

但是你不希望Spring为以下类创建bean

  • 你不希望/需要在其他bean中注入实例
  • 你不需要在自己的实例中注入bean(或rdependencies)
  • 你不需要他们受益于Spring功能

实体,DTO,价值对象就是它们的例子。

例如,实体永远不需要作为依赖项注入到另一个实体或服务中,因为实体不是在容器启动时创建的,而是通常在方法内部创建,并且范围仅限于方法生命周期。
除了你不需要Spring来创建寿命是一种方法的实例。 new运营商做得很好。
因此将它们定义为bean实例是没有意义的,甚至反直觉。

对象创建不应该依赖于类。 当你使用new运算符时,它会创建一个依赖关系,这对你来说是一个痛点,即当你在构造函数中进行更改时,你必须担心这个对象的创建。 对象全球化帮助的地方。 自动装配对象可以完全减少依赖关系。 如果您不使用此功能,您将会了解自己。

Spring实现了依赖注入模式。 你应该在spring的容器中注入将在其他类中使用的bean作为依赖以便能够工作。 通常会注入实现接口的类,以便在更改实现时,使用该接口的类不知道更改。

我建议你阅读有关Martin Fowler依赖注入的帖子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM