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

简述

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(environment);
    }
}

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

1.5 ClassLoaderAware

通过实现ClassLoaderAware接口,可以回调当前类的ClassLoader。

public class ClassLoaderAwareTest implements BeanClassLoaderAware {
   
    @Override
    public void setBeanClassLoader(ClassLoader classLoader) {
   
        System.out.println("classLoader回调");
        System.out.println(classLoader);
    }
}</
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值