【问题标题】:Why does Spring allow beans with Private constructors to be instantiated?为什么 Spring 允许实例化具有 Private 构造函数的 bean?
【发布时间】:2021-08-17 12:44:29
【问题描述】:

正如this question 的回答中提到的,Spring 可以通过反射调用私有构造函数。

通常,当我们使用私有构造函数创建类时,我们会使用它来防止在类外部实例化,例如 Singleton 类,或者用于防止使用静态实用方法/常量来实例化类。

Spring 允许实例化具有私有构造函数的 bean 的原因是什么?

【问题讨论】:

    标签: spring spring-bean


    【解决方案1】:

    您必须询问 Spring 开发人员。这可能是为了方便。

    • 它允许您创建除了通过 Spring Container 或其他基于反射的技术之外无法实例化的类。

    • 它允许您要求您的 Java 代码使用需要不同输入的其他构造函数。

    如果 Spring 不能使用私有或包访问构造函数,那么您必须声明具有公共访问权限的构造函数。然后您的 Java 代码可以使用它们。您不以这种方式使用类的意图不会那么明确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-07
      • 1970-01-01
      相关资源
      最近更新 更多