[英]Spring - is using new a bad practice?
是手动创建对象,即使用new
运算符而不是注册Spring
bean并使用依赖注入被认为是不好的做法? 我的意思是, Spring IoC
容器是否必须知道应用程序中的所有对象? 如果是这样,为什么?
您希望Spring为以下类创建bean :
服务,控制器或拦截器就是它们的一个例子。
例如,控制器可能需要注入服务或拦截器。
同样,您不希望通过实现每个类的单例模式来处理这些类的实例化。 这可能容易出错并需要锅炉板代码。
所以你希望所有这些类都是由Spring管理的bean。
但是你不希望Spring为以下类创建bean :
实体,DTO,价值对象就是它们的例子。
例如,实体永远不需要作为依赖项注入到另一个实体或服务中,因为实体不是在容器启动时创建的,而是通常在方法内部创建,并且范围仅限于方法生命周期。
除了你不需要Spring来创建寿命是一种方法的实例。 new
运营商做得很好。
因此将它们定义为bean实例是没有意义的,甚至反直觉。
对象创建不应该依赖于类。 当你使用new运算符时,它会创建一个依赖关系,这对你来说是一个痛点,即当你在构造函数中进行更改时,你必须担心这个对象的创建。 对象全球化帮助的地方。 自动装配对象可以完全减少依赖关系。 如果您不使用此功能,您将会了解自己。
Spring实现了依赖注入模式。 你应该在spring的容器中注入将在其他类中使用的bean作为依赖以便能够工作。 通常会注入实现接口的类,以便在更改实现时,使用该接口的类不知道更改。
我建议你阅读有关Martin Fowler依赖注入的帖子 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.