spring的refresh

在Spring框架中,`refresh` 方法是 `AbstractApplicationContext` 类的一个关键方法,它负责初始化或刷新整个Spring应用上下文。这个过程包括了创建和配置Bean,以及准备应用上下文以供使用。`refresh` 方法通常在应用启动时被调用,例如在Web应用的启动过程中,或者在独立应用的启动过程中。

 

`refresh` 方法的执行流程大致如下:

 

1. **准备刷新**:记录应用上下文的启动时间,设置活跃状态为`true`,并准备一个事件发布器。

 

2. **获取BeanFactory**:创建一个新的BeanFactory,通常是`DefaultListableBeanFactory`的实例。

 

3. **准备BeanFactory**:配置BeanFactory的基本属性,如类加载器、表达式解析器等。

 

4. **加载Bean定义**:从配置源(如XML文件、注解配置、Java配置类等)加载Bean定义到BeanFactory中。

 

5. **注册Bean后处理器**:注册实现了`BeanPostProcessor`接口的Bean后处理器,这些后处理器可以在Bean的初始化前后执行自定义逻辑。

 

6. **初始化消息源**:如果应用上下文配置了消息源,如国际化消息,那么在这里初始化。

 

7. **初始化应用事件广播器**:如果应用上下文配置了事件广播器,那么在这里初始化。

 

8. **初始化其他特殊Bean**:根据配置初始化其他特殊的Bean,如`ApplicationListeners`。

 

9. **刷新BeanFactory**:完成BeanFactory的初始化工作,包括Bean的实例化、依赖注入等。

 

10. **注册Bean的销毁钩子**:注册Bean的销毁钩子,以便在应用上下文关闭时能够正确地销毁Bean。

 

11. **完成刷新**:发布应用上下文刷新事件,通知所有注册的监听器上下文已经刷新。

 

12. **激活Bean**:激活所有实现了`SmartLifecycle`接口的Bean,使它们开始执行。

 

13. **发布上下文就绪事件**:发布上下文就绪事件,通知所有注册的监听器上下文已经准备好。

 

`refresh` 方法是Spring框架中非常核心的一个方法,它确保了Spring应用上下文的正确初始化和配置。开发者通常不需要直接调用这个方法,因为Spring的启动过程通常是自动完成的,例如在Spring Boot应用中,`refresh` 方法会在应用启动时自动被调用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值