簡體   English   中英

使用@Component 注釋的 class 的局部變量何時退出 memory?

[英]When does local variable of class annotated with @Component goes out of memory?

如果我有一個 class 在 spring 啟動應用程序中用 @Component 注釋,並且各種線程正在應用程序上運行並且所有線程都在訪問 @Component class 的局部變量,或者每個線程都將使其成為相同的變量? @Component 注解如何真正起作用,局部變量何時變為空? 假設我在 class 中有Set<String> ,這個集合什么時候會變空?

@Component 
class testing {
  Set<String> localSet;
  Set<String> getString(){ return localSet;}
}

如果我在localSet中插入一些隨機數據,這里的數據什么時候會被刪除呢?

我覺得您想知道@Component的“范圍”,因為您提到不同的線程將訪問相同的資源(在您的情況下,您的類的變量)

@Component的默認 scope 是 singleton ,如文檔中所述, 此處解釋為

當您定義一個 bean 定義並且它的范圍為 singleton 時,Spring IoC 容器將創建該 bean 定義所定義的 object 的一個實例。 此單個實例將存儲在此類 singleton bean 的緩存中,並且對該命名 bean 的所有后續請求和引用將導致返回緩存的 object。

所以在你的情況下, Set<String> localSet; 在 IOC 容器(通常是應用程序)啟動時進行初始化,並且該同一實例用於不同的請求,直到容器關閉。 但是,您可以更改組件的 scope。 更多關於范圍的信息

@Component 在這里解釋

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM