java - 当我们在 Bean 是单例的情况下调用 new Bean() 会发生什么?
问题描述
嗨,这可能是重复的问题,对不起,但我找不到那个帖子。
问题:-假设有一个以这种方式编写的 A 类
@Component
public class A{}
现在,当我调用 A a = new A() 两次时,它会为我提供相同的对象吗?这可能是个愚蠢的问题,但您能详细说明一下吗?
谢谢,
解决方案
当你调用A = new A()
你的例子时,你总是会得到一个新实例,因为 A 没有实现为单例类。
它被注释为@Component 的事实只会在它在spring上下文中实例化时影响该类,并且实例化的变量= new()
(有例外,但让我们概括一下)不在spring上下文中。
如果您想始终拥有相同的 bean,您应该使用 @Autowired 实例化您的变量“a”,方法如下:
@Autowired
private A a;
另请注意,@Autowired 仅在当前类也在 spring 上下文中时才有效(您没有使用 =new(...) 实例化它)。
推荐阅读
- processing - 在服务器上运行处理的提示 - 最佳服务器,如何运行
- asp.net - 将文件部署到已经在 PROD 中的 WEB 站点
- reactjs - 如何修复:错误:'
' 没有提交检出致命:添加文件失败 - java - Spring Boot,具有多个 Hikari 数据源和单个数据源配置 Java 文件的 Spring Data JPA
- kotlin - 从对象表达式访问阴影变量
- javascript - 如何将具有不同名称的单选按钮分组
- html - 如何在图像周围创建圆形边框?
- python - TensorFlow 学习算法如何工作?
- java - Apache POI XSSFWorkbook setSheetOrder 未排序
- r - dplyr 在子集上过滤整个数据帧