繁体   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