[英]Changing a class annotated @Component to @Bean annotated method
[英]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.