@Configuration注解中的proxyBeanMethods是干什么的

/ 默认分类 / 没有评论 / 499浏览

很多时候我们写configuration时候会写很多@Bean这种注解,用来向ioc容器注册实例。于是很可能出现以下这种代码

    @Bean
    public A getA(){
        System.out.println("new a");
        return new A();
    }

    @Bean
    public C c1(){
        C c = new C();
        c.setA(getA());
        return c;
    }

    @Bean
    public C c2(){
        C c = new C();
        c.setA(getA());
        return c;
    }

默认情况下,spring会为@Configuration注解下的bean构造方法提供代理支持(用来描述bean之间的依赖关系),对getA增强过后,那么以上中c1里的a和c2里的a则都会获取同一个A的引用,如果某些情况下需要两个不同的a,则需要设置proxyBeanMethods为false。