【发布时间】:2026-01-22 18:00:02
【问题描述】:
我对这个小话题感到困惑。我在某处读到,如果一个类用@Component 注释,它是spring 管理的bean,只要需要,spring 就会提供它。我将它与 bean 的范围混淆了。让我解释一下:
假设一个类
@Component
public class Example{ }
如果我在其他类中使用new Example() 实例化这个类,容器是否会一直为我提供相同的示例对象?还是每次都会返回我新的对象?
令人困惑的部分来了:
如果在同一个班级我有两个这样的豆子:
@Component
public class Example {
@Bean DataSource sqlDataSource() {
// some logic
}
@Bean @Scope("prototype") SomeObject getSomeObject() {
return new SomeObject(sqlDataSource()); //**
}
}
在这种情况下会发生什么?每次请求 SomeObject bean 时,sqlDataSource() 方法调用都会一次又一次地返回相同的对象,还是每次请求 SomeObject 时都会返回新的 DataSource 实例?
请帮忙。
【问题讨论】: