@configuration注解

1.proxyMethod = true/false 跟@bean是否是单实例,还是多实例无关

2.在 扫描的时候,会把configuration的 BeanDefinition注册,同时会把@bean修饰的方法的返回的类型,的BeanDefinition注册

@bean修饰的类型的 BeanDefinition 里面有个属性introspectedMethod = 这个方法的位置,
这也遵循先将所有的beanDefinition搞到手的原则

然后,根据configuration的 beanDefinition创建对象,调用的方法就是无参构造,如果 proxtMethod = true,那么返回的是,代理对象,id是这个beanDefinition的 id,(id,代理对象)缓存起来

然后拿到,下一个beanDefinition,如果scope = singleton 然后 调用introspectedMethod 这个方法创建对象,这时候跟什么代理对象与否无关,因为这一步都是 通过反射来创建对象的
如果 scope = prototype,那么暂时不创建对象

2.true 代表 在创建 configuration的时候,创建的是 代理对象,创建完configuration后,紧接着 还是拿着 @bean返回对象的 beanDefinition,里面的属性(@bean方法),去执行这个方法,此时是走的代理对象的 @bean方法,这时候生成的对象,如果是单实例的,那么 缓存在 concurrentMap缓存中,下一次外部调用@bean方法,也是调用代理对象的,首先getBean(),从缓存中拿,有返回,没有创建返回并缓存
3.false: 代表创建 configuration的时候,创建的就是 configuration实例,这时候去创建bean(单实例),直接调用的 @bean的方法,然后缓存起来,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值