代码之家  ›  专栏  ›  技术社区  ›  Gaurav

我们需要春豆中的静电场吗?

  •  1
  • Gaurav  · 技术社区  · 6 年前

    我已经看到了将记录器实例创建为用任何Spring注释注释的类的静态属性的一般实践。( @Component , @Service )

    因为,所有创建的bean在本质上都是单例的。我们真的需要这个scnerio中的静态字段吗,因为毕竟只有一个实例?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Tu.Ma.    6 年前

    我想期末考试也可以问同样的问题:“ 如果我知道我不会通过代码触摸变量,为什么要声明变量为最终变量?

    问题是,你不是唯一接触或阅读代码的人。给出正确的语义对于一个可读和可维护的代码是必不可少的。您可能知道服务和/或控制器是单例的,所以不需要将变量放在静态的内部,但是这样您就显式地声明了它。

    添加:

    如果构建失败,您将如何在单例构建期间记录某些内容:-)

    我引用 狗屎 评论只是为了让答案更完整。有一个实际的问题,使记录器静态地址:在创建期间记录。

    跟进:

    我只是想知道为什么我们需要最终的静态记录器而不是最终的记录器。什么使记录器成为静态成员而不仅仅是类成员?

    假设你的班级不是单身。在这个场景中,日志记录器必须只记录。它与对象无关,它是一个类属性。这意味着,如果实例化一个或一千个对象,记录器就不会改变。所以您可以在所有对象之间共享它,从而使它成为静态的。

    让我们假设你的班级是单身。总是只有一个实例。静态仍然有用吗?从实际的角度来看,没有。您只有一个类实例,所以只有一个记录器,不管是静态的还是非静态的。但是,如果您声明它是静态的,那么您将声明希望记录器是类的属性,而不是该类的对象的属性。您正在明确您的意图和设计,从而提高代码的质量。

    希望这能回答你的问题。