首页 > 编程语言 >框架源码 -- spring aware

框架源码 -- spring aware

时间:2023-02-20 16:01:31浏览次数:36  
标签:调用 -- spring 接口 bean 源码 Spring 方法


框架源码 – spring aware

bean实现了Aware系列接口可以访问Spring容器,其中涉及到bean的创建过程,其中包括BeanNameAware,BeanFactoryAware,ApplicationContextAware都有参与bean的创建。具体详情内容请查看​​【框架源码–spring bean]​​。

bean的生命周期

  1. Spring对bean进行实例化;
  2. Spring将值和bean的引用注入到bean对应的属性中;
  3. 如果bean实现了BeanNameAware接口,Spring将bean的ID传递给setBean-Name()方法;
  4. 如果bean实现了BeanFactoryAware接口,Spring将调用setBeanFactory()方法,将 BeanFactory容器实例传入;
  5. 如果bean实现了ApplicationContextAware接口,Spring将调 用setApplicationContext()方法,将bean所在的应用上下文的引用传入进来;
  6. 如果bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessBeforeInitialization()方法;
  7. 如果bean实现了InitializingBean接口,Spring将调用它们的afterPropertiesSet()方法。类似地,如果bean使用init-method声明了初始化方法,该方法 也会被调用;
  8. 如果bean实现了BeanPostProcessor接口,Spring将调用它们的postProcessAfterInitialization()方法;
  9. 此时,bean已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到 该应用上下文被销毁;
  10. 如果bean实现了DisposableBean接口,Spring将调用它的destroy()接口方法。同样, 如果bean使用destroy-method声明了销毁方法,该方法也会被调用。

这些Aware系列接口增强了Spring bean的功能,但是也会造成对Spring框架的绑定,增大了与Spring框架的耦合度。

源码

public interface Aware {

}

继承Aware

框架源码 -- spring aware_耦合度


标签:调用,--,spring,接口,bean,源码,Spring,方法
From: https://blog.51cto.com/u_15969474/6068639

相关文章

  • 自动故障感知以及服务实例自动摘除源码剖析
    1每隔1min调度一次EvictionTask这个任务,感知是否有实例故障,并摘除eureka-server初始化完成,进入下面这个方法registry.openForTraffic(applicationInfoManager,regist......
  • 商法的基本概念和特征
    商法总论一、基础概念商在我国商法中,”商“在限定法律关系主体时,是指商人和企业等商事主体。在限定事业和行为时,是指盈利事业和商行为。商事商人从事的以盈利为目的的各种......
  • 2-1-4.spring源码--AbstractApplicationContext
    Spring源码–AbstractApplicationContext概述江湖上流传这样一个传说,只要把spring的refresh()搞明白,spring就学的七七八八了。今天来盘一下refresh方法,这个这是一个困难点了......
  • 测试ChatGPT:web接口
    需求描述:请给我一个flask接口用于获取后端服务器上的静态资源 对话内容:  1fromflaskimportFlask,send_from_directory2app=Flask(__name__)34......
  • 智能通信网关管理设备(借助工业智能网关实现工业设备在线监控和维护)
    方案背景工厂的设备都需要定时检修维护,保障稳定运行和安全生产。无论是日常检查还是故障维护,都需要花费相当多的人力、物力和资金,也需要面对停工维护带来的损失。在传统维护......
  • 圆锥曲线 / conic section の 推导 / proof
    #####椭圆/eclipse-equation/公式:$\frac{x^2}{a^2}+\frac{y^2}{b^2}=1\/\\frac{y^2}{a^2}+\frac{x^2}{b^2}=1\quad\left(a>b>0\right)$-顶点:$(\pma,0),(0,\pmb......
  • flex 布局 item 子元素层级问题
    原始状态<html><head><metacharset="utf-8"><style>#main{width:300px;height:300px;border:1pxsolidblack;display:flex;flex-direction:colum......
  • Windows加装新固态硬盘设置过程
    开机后打开资源管理器,此电脑-右键-管理-磁盘管理打开后会自动弹出磁盘初始化界面(图略),这里有两个选项:MBR和GPT。MBR应用较广泛,允许通过LegacyBIOS启动,但支持分区的大小及......
  • vue3中对于/deep/和::v-deep的警告信息处理
    目前发现两处警告信息:::v-deepusageasacombinatorhasbeendeprecated.Use:deep()instead.the>>>and/deep/combinatorshavebeendeprecated.Use:deep()......
  • QWidget设置成模态对话框并弹框显示
    正确的做法: 1、FormProcessRoi*form=newFormProcessRoi(this);//只能用指针,不能实例化为对象//Qt::NonModal不阻塞//Qt::WindowModal阻塞父窗口,所有祖先窗......