手动创建对象,即使用new
操作符而不是注册Spring
bean并使用依赖注入,是否被认为是一种不好的做法?我的意思是,Spring IoC
容器是否必须知道应用程序中的所有对象?如果是这样,为什么?
手动创建对象,即使用new
操作符而不是注册Spring
bean并使用依赖注入,是否被认为是一种不好的做法?我的意思是,Spring IoC
容器是否必须知道应用程序中的所有对象?如果是这样,为什么?
使用 new 并不是什么坏事,你只是将使用 new 的责任交给了 IoC 容器。IoC 将知道您注册的所有类。在使用框架时,更重要的是思考应用程序的架构,因为框架会让坏的设计变得和好的设计一样容易实现。
如果您不需要多个类的实现,请使用 new。
如果您认为可能需要在实现之间切换,请考虑应用程序的设计,并找到适当的注入点,以便重构不会成为负担。
如果您需要多个类的实现,请使用工厂或 DI 框架等设计模式。
并非应用程序的每一个角落都需要高度可配置。这会导致过度设计和难以维护的代码。
Spring实现了依赖注入模式。您应该将要在其他类中作为依赖使用的bean注入到Spring容器中,以便能够工作。通常注入实现接口的类,这样如果您更改了实现,使用该接口的类就不会知道更改。
我建议您阅读Martin Fowler关于依赖注入的post。
new
来创建对象,但是在这种情况下 Spring 就不会向这些对象注入任何依赖项,因为 Spring IoC 不知道该对象是如何创建的。 - Ivan