美文网首页
Spring中的Aware接口

Spring中的Aware接口

作者: 小丸子的呆地 | 来源:发表于2021-07-07 16:21 被阅读0次

IOC是Spring的一个重要功能,Spring维护了一个BeanFactory去生成和缓存项目运行过程中的对象。这些对象分为用户对象,和上下文对象。
用户对象就是我们自己定义的一些业务、工具类对象。
上下文对象指的是Spring框架在创建过程中的使用的一些上下文对象或者信息,比如BeanFactory对象本身、BeanNameClassLoader等等。
这些对象或者信息有Spring启动过程中生成并且维护,那么有时候我们需要在业务中使用这些信息,需要让框架主动的将这些信息赋值到我们需要的地方。
Spring提供了Aware接口来帮助我们实现这件事,并且提供了丰富的Aware子类配合我们获取上下文对象或信息。

所以Aware接口就是为了方便我们获取框架上下文对象或信息。

比如BeanFactoryAware接口

public interface BeanFactoryAware extends Aware {

    /**
     * Callback that supplies the owning factory to a bean instance.
     * <p>Invoked after the population of normal bean properties
     * but before an initialization callback such as
     * {@link InitializingBean#afterPropertiesSet()} or a custom init-method.
     * @param beanFactory owning BeanFactory (never {@code null}).
     * The bean can immediately call methods on the factory.
     * @throws BeansException in case of initialization errors
     * @see BeanInitializationException
     */
    void setBeanFactory(BeanFactory beanFactory) throws BeansException;

}

如果我们需要获取BeanFactory对象,那么只需要实现这个BeanFactoryAware接口,并且实现对应的setBeanFactory方法,Spring框架会在启动阶段执行这个方法,将beanFactory对象传入。这样我们就能拿到这个beanFactory对象了。

而这个赋值的时机是在框架启动过程中,初始化对象属性时。

  • 对象实例化
    我们都知道创建Bean过程中首先为对象在内存中开辟一块空间,并且给对象的属性附上默认值。这个过程叫做对象的实例化。实例化后的对象还不能用,因为他还不完整。
  • 对象初始化
    紧接着我们会执行对象的初始化,首先我们会填充对象属性,调用的是populateBean方法(这个过程会产生对象的循环依赖问题,因为可能存在有些属性是另外的对象)。
    然后调用invokeAwareMethods方法,为对象注入对应的上下文对象。
    后面还有BeanPostProcessor相关方法执行,AOP是在这个阶段完成的,这里不详细列举了。

相关文章

  • Spring知识点整理(持续更新)

    Aware接口使用 Spring中Aware.java是个没有任何方法的接口,有很多子接口,常见的比如BeanNa...

  • Spring5IOC容器解析——Aware接口

    Aware Aware 是 Spring 中的一个根接口,继承该接口的子接口有很多,但是该接口没有任何方法,所以大...

  • Spring Aware容器感知技术

    ​ Spring Aware是什么 Spring提供Aware接口能让Bean感知Spring容器的存在,即让Be...

  • spring中Aware后缀

    aware: 意识到的;知道的; spring中带有Aware后缀的接口主要是和bean有关,实现了Aware后...

  • spring的aware们

    Aware是什么 spring框架提供了多个*Aware接口,用于辅助Spring Bean编程访问Spring容...

  • Aware Mode

    Aware接口 Spring中提供了一些以Aware结尾的接口,实现了Aware接口的bean在被初始化之后,可以...

  • Spring中的aware接口

    Spring中有很多继承于aware中的接口,这些接口到底是做什么用到的。 aware,翻译过来是知道的,已感知的...

  • Spring中的Aware接口

    IOC是Spring的一个重要功能,Spring维护了一个BeanFactory去生成和缓存项目运行过程中的对象。...

  • Spring Aware相关接口的使用

    在spring中提供了很多关于Aware的接口,该接口拥有一个统一的规律,即在spring对实现了Aware相关接...

  • Spring aware相关接口 浅析

    spring中 有一大堆Aware结尾接口, 例如BeanFactoryAware, ApplicationCon...

网友评论

      本文标题:Spring中的Aware接口

      本文链接:https://www.haomeiwen.com/subject/rgnoultx.html