spring 中的单例可以有静态方法吗?
Can a singleton in spring have static methods?
Component
和 Service
类型的 bean 和大多数其他 bean 类型默认是单例的。
在我的一个代码 Pull 请求中,我在 Component
中将一个方法声明为静态方法,因为该方法没有修改任何 class 级变量。
我的代码审阅者指出,由于 class 无论如何都是一个单例并且将有一个单一的引用,他说没有必要制作方法 static
,而是制作它instance
方法。
由于我的应用程序中的大多数 class 都是单例,哪种方式是正确的代码编写方式?
你的审稿人可能是对的,在单例中声明静态方法毫无意义;除非这个静态方法是 returns 单例实例本身的工厂方法。
我能想到另外两个不在单例中声明静态方法的原因:在某些情况下静态方法的测试更难,而且你真的会混淆这个单例的调用者。 He/she 可能会看到有一个静态方法并且很难理解为什么这样声明它,据我所知,对于这样的方法需要额外的推理。
Component
和 Service
类型的 bean 和大多数其他 bean 类型默认是单例的。
在我的一个代码 Pull 请求中,我在 Component
中将一个方法声明为静态方法,因为该方法没有修改任何 class 级变量。
我的代码审阅者指出,由于 class 无论如何都是一个单例并且将有一个单一的引用,他说没有必要制作方法 static
,而是制作它instance
方法。
由于我的应用程序中的大多数 class 都是单例,哪种方式是正确的代码编写方式?
你的审稿人可能是对的,在单例中声明静态方法毫无意义;除非这个静态方法是 returns 单例实例本身的工厂方法。
我能想到另外两个不在单例中声明静态方法的原因:在某些情况下静态方法的测试更难,而且你真的会混淆这个单例的调用者。 He/she 可能会看到有一个静态方法并且很难理解为什么这样声明它,据我所知,对于这样的方法需要额外的推理。