初始化Spring Bean与延迟初始化Spring Bean

•Bean 初始化(Initialization)

      •@PostConstruct 标注方法

      •实现InitializingBean 接口的afterPropertiesSet() 方法

      •自定义初始化方法

            •XML 配置:<bean init-method=”init” ... />

            •Java 注解:@Bean(initMethod=”init”)

            •Java API:AbstractBeanDefinition#setInitMethodName(String)

思考:假设以上三种方式均在同一Bean 中定义,那么这些方法的执行顺序是怎样?

•Bean 延迟初始化(Lazy Initialization)

      •XML 配置:<bean lazy-init=”true” ... />

      •Java 注解:@Lazy(true)

思考:当某个Bean 定义为延迟初始化,那么,Spring 容器返回的对象与非延迟的对象存在怎样的差异?

非延迟初始化在spring应用上下文启动完成后,被初始化;延迟初始化时按需初始化;

finishBeanFactoryInitialization(beanFactory)#beanFactory.preInstantiatSingletons()初始化普通bean,非普通bean中一部分是内部容器自己帮忙初始化了,另一部分是延迟加载按需要初始化;

延迟加载与非延迟加载在bean的注册是没有区别的,按需要注册;在依赖查找和依赖注入的区别就体现在,非延迟查找在上下文启动之前就初始化了,延迟加载在初始化完成之后加载;在spring应用上下文生命周期之前后输出;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值