08 Spring IoC 容器生命周期概述

(1)总体分为启动、运行、结束。

主要在org.springframework.context.support.AbstractApplicationContext中的refresh()方法:

(2)BeanFactory和FactoryBean的区别?

BeanFactory是IoC底层容器。

FactoryBean是创建Bean的一种方式,帮助实现复杂的初始化逻辑

org.springframework.beans.factory.FactoryBean

getObject()方法会被容器调用,但是容器怎么知道此方法会被调用呢?由getObjectType()方法来决定,如果对象的类型是相同的,那么通过isSingleton()方法是否是单例来进行区分,但是isSingleton()方法并不是每次都会调用。

 

(3)Spring IoC容器启动时做了哪些准备?

IoC配置元信息读取和解析、IoC容器生命周期、Spring事件发布、国际化等。

(4)@Bean注解和FactoryBean的区别

对于我们使用创建复杂的bean来说,是不是用@Bean这个注解就可以完全代替FactoryBean呢,是不是FactoryBean的用意本身只是更好的去帮助Spring的一些内键Bean,而不是对我们用来扩展的,如果用来扩展Bean的话,@Bean是不是更方便 简洁一些?

@Bean 确实可以做到,不过 FactoryBean 很早的接口,当时还不支持 Annotation。

可以参考 MyBatis-Spring 的 org.mybatis.spring.mapper.MapperFactoryBean 这个 FactoryBean 类,为 Mapper 接口返回对应的动态代理对象,从而调用该接口的方法时能够进行数据库相关操作。

还有一种情况啊, 动态的生成代理对象,这时@Bean 就做不到了,像FactoryBean 在一些基于spring开发的框架上,使用的特别多, 比如feign mybatis等等都是基于factorybean来动态生成代理对象的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamCatcher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值