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

Spring同配置类中Bean方法跨调用的实例管理咨询

Spring @Bean方法内部调用其他@Bean方法时是否复用Bean实例?

在Spring注解式Bean初始化场景中,当配置类里的@Bean工厂方法直接调用另一个@Bean方法时,Spring会正确复用已创建的Bean实例,不会多次创建SomeBean实例。

核心原理

Spring会对标注了@Configuration的类生成CGLIB动态代理。当你在anotherBean()方法里调用someBean()时,这个调用会被代理拦截,Spring会直接返回IoC容器中已经初始化完成的SomeBean实例,而非重新执行someBean()方法的逻辑去创建新对象。

例外场景

如果你的配置类添加了@ProxyBeanMethods(false)注解(一般用于轻量级配置、降低代理开销),此时Spring不会为该类生成代理,调用someBean()会直接执行方法体,每次调用都会创建新的SomeBean实例。

示例代码

@Configuration
class Config {
    
    @Bean
    public SomeBean someBean() {
        // some builder code
        return someBean;
    }

    @Bean
    public AnotherBean anotherBean() {
        return anotherBeanBuilder
            .withSomeBean(someBean())
            .build();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 08:29:53