Spring框架常用各类钩子函数汇总

Spring框架常用各类钩子函数汇总

  • 简述
  • 1.Aware类接口
    • 1.1 ApplicationContextAware
    • 1.2 BeanFactoryAware
    • 1.3 BeanNameAware
    • 1.4 EnvironmentAware
    • 1.5 ClassLoaderAware
    • 1.6 ImportAware
  • 2.监听器ApplicationListener
  • 3.后置处理器
    • 3.1 BeanFactoryPostProcessor
    • 3.2 BeanPostProcessor
  • 4.初始化、销毁bean
  • 5. ImportBeanDefinitionRegistrar
  • @Import注解补充
    • 1.直接导入类
    • 2.导入接口ImportSelector实现类
    • 3. 导入接口ImportBeanDefinitionRegistrar实现类
  • 6. BeanDefinitionRegistryPostProcessor
  • 7.FactoryBean

简述

Spring作为优秀的企业级框架,在设计上针对Bean的生命周期各个阶段预留需要了许多hook,通过这些hook可以帮助快速实现自定义的框架设计,动态加载Bean,管理容器等功能,提供了快速扩展的能力。为简化开发环境的搭建,下面的示例采用了基于SpringBoot框架验证各个接口。具体示例代码由此获得。

1.Aware类接口

Aware类接口主要是在容器管理Bean的生命周期过程中,在各个阶段执行以后留下的回调接口,其一些常见接口有ApplicationContextAware、BeanFactoryAware、BeanNameAware、EnvironmentAware、ClassLoaderAware、ImportAware等,都继承了Aware接口。

1.1 ApplicationContextAware

ApplicationContextAware主要用于获取容器的上下文,可以对ApplicationContext进行修改,示例:

public class ApplicationContextAwareTest implements ApplicationContextAware {
   
@Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
   
        System.out.println("---------ApplicationContext回调--------------");
        System.out.println(applicationContext.getBean("factoryBeanTest"));
   }
}

将该实现类注入到Spring容器中即可获取ApplicationContext。

1.2 BeanFactoryAware

BeanFactory是工厂类,用于获取Bean示例。BeanFactoryAware主要用于获取BeanFactory示例,进而获取Bean。

public class BeanFactoryAwareTest implements BeanFactoryAware {
   
    @Override
    public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
   
        System.out.println("BeanFactory回调");
        System.out.println(beanFactory);
    }
}

将该实现类注入到Spring容器中即可。

1.3 BeanNameAware

通过BeanNameAware实现类可以获取当前类自己的Bean的名字。

public class BeanNameAwareTest implements BeanNameAware {
   
    @Override
    public void setBeanName(String s) {
   
        System.out.println("BeanName回调");
        System.out.println(s);
    }
}

将该实现类注入到Spring容器中即可。

1.4 EnvironmentAware

通过实现EnvironmentAware接口,可以获取Environment对象,操作里面的外部属性配置。

public class EnvironmentAwareTest implements EnvironmentAware {
   
    @Override
    public void setEnvironment(Environment environment) {
   
        System.out.println("Environment回调");
        System.out.println(

你可能感兴趣的:(spring,spring,java)