zoukankan      html  css  js  c++  java
  • SpringBoot扩展接口- Bean实例化前后扩展点

    常用的扩展接口:

    1、ApplicationContextAware:获取应用上下文

    2、BeanPostProcessor 接口在对象实例化后, 初始化方法调用前后做前置处理和后置处理操作。

    触发时间:

    刷新上下文refreshContext()方法中,调用 finishBeanFactoryInitialization(beanFactory) 方法,进行bean的实例化

    上下文applicationContext的事件监听器和时间广播器已经初始化完成
    内置tomcat已经启动

    工厂FactoryBean一般不需要扩展接口

    普通bean才需要扩展接口

    初始化bean的入口 beanFactory.getBean()方法

    1、创建bean实例

    2、bena实例缓存起来

    3、调用populateBean()会在这里进行@Autowire注解的依赖注入

    4、initializeBean()进行bean的初始化

    4.1 BeanNameAware、BeanClassLoaderAware、BeanFactoryAware接口方法调用 (实现了这些接口的bean)

    4.2 BeanPostProcessor接口的postProcessBeforeInitialization()方法调用
    ApplicationContextAwareProcessor 后置处理器初始化前方法中处理下面接口调用
        EnvironmentAware、
        EmbeddedValueResolverAware、
        ResourceLoaderAware、
        ApplicationEventPublisherAware、
        MessageSourceAware、
        ApplicationContextAware接口的方法调用

    ServletContextAwareProcessor 处理器处理
    ServletContextAware接口调用

     

    4.3 调用bean的初始化方法InitializingBean接口afterPropertiesSet()方法

    或者注解指定的 init方法

    4.4 BeanPostProcessor接口的 postProcessAfterInitialization()方法调用

    作者:海绵般汲取
    出处:https://www.cnblogs.com/gne-hwz/
    版权:本文版权归作者和博客园共有
    转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
  • 相关阅读:
    Golang之ring.Ring的Link操作
    Servlet3.0新特性之web-fragment.xml模块化配置文件
    使用filter代替jsp获取参数
    数据库中常用的字符串截取函数-总结
    js判断两字符串是否相等不区分大小写
    java读取excle内容(类似表结构)
    postgreSQL数据库分页查询
    3D轮播图案例
    3D立方体案例
    去除HTML双击背景和input框取消输入颜色
  • 原文地址:https://www.cnblogs.com/gne-hwz/p/15305801.html
Copyright © 2011-2022 走看看