繁体   English   中英

Spring Boot桌面/ CLI应用程序中组件的正确@Scope是什么?

[英]What is the correct @Scope for Components in Spring Boot desktop/CLI applications?

我已经编写了几个Spring Boot应用程序(目前,一个用于Web,一个使用JavaFX和一些CLI应用程序)。 @Scope注解为@Service S和@Component S:虽然如预期所有的工作,我目前用的桌面或命令行应用程序的一个特定的概念奋斗。

我最近阅读了很多为什么单身人士“邪恶”或至少不受欢迎,但对于桌面应用程序,我目前看不到其他方法来实现它,因为大多数时候单个实例在这些类型的应用程序中就足够了。

Guice中,我将在我的模块中创建一个(非静态和非最终)实例。 Spring中我使用@Scope(“singleton”)

我现在想知道的:这是一个干净的解决方案吗? 有没有其他解决方案?

问候,丹尼尔

您正在阅读的文章是关于Singleton 模式的 许多人认为Singleton是一种反模式,并且有很多关于原因的信息。 为什么你应该避免这种模式的一些很好的理由,请参阅这个答案

你所指的是单身作为范围 Spring不遵循模式,单例的范围只是表明容器只会创建一个实例并使用它来满足依赖关系。 可能有多个容器,每个容器都有自己的实例,或者一个容器,其中bean是单例范围,另一个容器是原型范围。

Singleton是Spring中的默认范围 ,因此您实际上不需要指定它。 如果您没有特定的理由使用不同的范围,那么您可能需要默认的单例。 有时候,我需要一个bean 不能共享,在这种情况下,我可能会使用原型 有关可用范围及其含义的更多信息,请查看Spring文档

在任何情况下,这里的关键区别是这不是单例模式的实现。 如果Spring要实现这样的模式,那么我们希望每个容器都具有相同的实例 ,而实际情况并非如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM