Spring Bean的生命周期

大家好,这期主题就是Spring Bean的生命周期

什么是Spring Bean

通俗的讲,Spring Bean就是spring容器帮助我们管理的bean对象。

下面,我们就进入到Spring Bean的生命周期的学习

bean会经历以下四个阶段:

①实例化 CreateBeanInstance

②属性赋值 PopulateBean

③初始化 Initialization

④销毁 Destruction**

其中有多个增强接口贯穿了这四个阶段

Spring Bean生命周期中的增强接口

实例化之前,工厂后处理器(实现BeanFactoryPostProcessor或BeanDefinitionRegistryPostProcessor接口,重写方法)、对BeanDefinition信息对象的注册或修改

public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
    public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
        System.out.println("进入MyBeanFactoryPostProcessor的postProcessBeanFactory方法");

//        修改
//        BeanDefinition student = configurableListableBeanFactory.getBeanDefinition("student");
//        student.setBeanClassName("com.apesource.pojo.User");

        //注册
        BeanDefinition beanDefinition = new RootBeanDefinition();
        beanDefinition.setBeanClassName("com.apesource.pojo.User");
        DefaultListableBeanFactory defaultListableBeanFactory = (DefaultListableBeanFactory) configurableListableBeanFactory;
        defaultListableBeanFactory.registerBeanDefinition("user",beanDefinition);
    }
}

属性赋值完成后完成各种Aware接口,作用:为Bean生命周期的各个阶段提供扩展

EnvironmentAware
实现该接口,项目启动时,可以获取环境变量配置。

BeanFactoryAware
获取加载该Bean的Bean工厂,可以动态加载Bean.

ApplicationEventPublisherAware
可以i获取ApplicationEventPublisher,ApplicationEventPublisher可以用来发布事件,结合ApplicationListener来共同使用,下文在介绍ApplicationListener时会详细提到。这个对象也可以通过spring注入的方式来获得

ResourceLoaderAware
可以获取ResourceLoader,ResourceLoader可以获取classpath内所有的资源对象。

BeanNameAware
注入Bean的名字。
 

Aware接口执行完毕执行BeanPostPocessor前置处理(实现BeanPostProcessor接口,重写before方法 )

紧接着,执行系统初始化Bean要实现InitializingBean接口,执行 afeterPropertiesSet()方法

自定义初始化:xml文件<bean>标签内加(init-method="方法名")属性

执行BeanPostPocessor后置处理(实现BeanPostProcessor接口,重写after方法 )

当以上的流程都执行完毕,那么我们的Bean就已经被创建了,可以正常使用

执行DisposableBean销毁Bean

当Bean 不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用其实现的destroy()方法执行销毁。

以上就是我对Spring Bean的生命周期的浅浅理解,如有不足,可以在评论内指出,一定虚心学习

        

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值