用工厂方法实例化 Spring bean 的原因是什么?



我知道 Spring 中有基于构造函数的注入和基于二传手的注入。何时应使用工厂方法注入豆类?

这是一个设计问题,取决于你的架构。

如果您有带有静态工厂方法的类,为什么要添加不必要的构造函数来破坏设计以适应 DI 框架?

它是不灵活的,因此Spring支持两种方式。


摘自Joshua Bloch"Effective Java">

第 1 项:考虑静态工厂方法而不是构造函数。

静态工厂方法优点:

  • 他们有名字。
  • 它们不需要在每次调用时创建新对象。
  • 它们可以返回其返回类型的任何子类型的对象。
  • 它们减少了创建参数化类型实例的详细程度。

静态工厂方法的缺点:

  • 仅提供静态工厂方法时,没有公共或受保护构造函数的类不能被子类化。
  • 它们不容易与其他静态方法区分开来

最新更新