簡體   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