对象作用域和BeanFactory

DAY9 对象作用域和BeanFactory

问题1

  • 交给Spring管理的Bean对象,一定是我们用类创建出来的Bean嘛?

不一定,可以是反向代理对象产生的Bean。

  • 创建出来的Bean就永远是单例的吗,有可能是原型模式嘛?

有的

细节补充

  1. Spring有哪几种作用域:

    img

  2. Spring 中在哪里实现了这个作用域的判断?

    AbstractAutowireCapableBeanFactory类中的creatBean()方法中,在创建和修改对象的时候判断单例还是原型。具体的方法体现是 beanDefiniton.isSingleton() 方法。假如是单例Bean就会存在单例池中,否则直接返回。

  3. 补充:什么是单例对象,什么是原型对象?

    singleton:每次从spring获取的都是同一个地址的对象 ——> 所以可以说都是一个实例对象。

    prototype:每次从spring获取的都是不同地址的对象 ——> 所以每次获取都是新的一个对象。

  4. Factory作用:创建AOP代理对象。

  5. Factory实现原理:

    这里结合网上文章进行补充:

    img

该图是根据腾讯云 Java帮帮 的讲解进行整理的图

总结:

  1. FactoryBean是一个Bean,但不仅仅是一个Bean。他能生产或者修饰对象生成的工厂Bean。它能在需要的时候生产一个对象,也可以返回任何Bean的实例。
  2. 一个Bean如果实现了FactoryBean接口,那么根据Bean的名称获取到的实际上是getObject()返回的对象,而不是该Bean的本身,如果想要获取这个Bean自身的实例,就需要在这个Bean的名称上加上 ‘ & ’符号。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值