You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring是否会向多个组件注入同一Service实例?结合代码实例问询

你的猜想完全正确!

默认情况下,Spring里被@Service(以及@Controller、@Component这类组件注解)标注的类,作用域都是单例(Singleton)。Spring容器只会为这个类创建唯一的一个实例,并且在整个应用运行期间复用它。

所以你代码里的SomeService,不管是注入到SomeController还是AnotherController,两个控制器拿到的都是同一个对象实例。

如果想验证的话,可以给SomeService加个打印实例哈希值的方法:

@Service
public class SomeService {
    public void showInstance() {
        System.out.println("当前SomeService实例哈希:" + this.hashCode());
    }
}

然后在两个控制器的接口方法里调用这个方法,启动应用后访问接口,就能看到控制台输出的哈希值完全一样,直接证明是同一个实例。

当然,要是你手动给SomeService加上@Scope("prototype")这类修改作用域的注解,那每次注入都会生成新实例,但默认情况下肯定是单例模式。

内容的提问来源于stack exchange,提问作者BugsOverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 15:48:30