spring全注解-bean生命周期

bean的生命周期

bean->初始化->销毁

  • 容器帮我们管理bean的生命周期
  • 构造(对象创建)
    • 单实例:再容器启动的时候创建对象,销毁时容器会帮我们调用destory
    • 多实例:每次获取对象的时候创建对象,容器不会管理这个bean,容器不会调用销毁方法
  • 我们可以自定义初始化和销毁方法:容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法
    1. 指定初始化和销毁方法,初始化的时候需要赋值,销毁的时候关闭一些数据源
    2. 初始化对象创建完成,并赋值好,调用初始化方法
    3. 销毁:容器关闭的时候调用销毁方法
@Configuration
@ComponentScan
public class config {
    @Bean(value = "feifei",initMethod ="init",destroyMethod = "destory")
    public feifei getFeiFei(){
        return new feifei();
    }
}
  • 通过让bean实现disposablebean inital
@Scope("prototype")
@Component("feifei")
public class feifei  implements InitializingBean, DisposableBean {
    public feifei(){
        System.out.println("执行构造方法了");
        }
        public  void init(){

            System.out.println("执行 init方法");
        }
        public void destory(){
            System.out.println("destory 方法执行");
        }

    //bean销毁的时候调用
    public void destroy() throws Exception {

    }
    //bean创建完成,并且在属性填充好之后调用
    public void afterPropertiesSet() throws Exception {
        System.out.println("init");
    }
}
后置处理器
  • beanpostprocessor:bean的后置处理器,是一个接口

  • 在bean初始化前后进行一些处理工作

  • 接口中有两个方法

    • postProcessBeforeInitialization  在初始化之前
      
    • postProcessAfterInitialization   在初始化之后
      
@Component
public class mybeanpostprocesser implements BeanPostProcessor {
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println(beanName);
        return beanName;
    }
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("xiangxiangyyds");
        return beanName;
    }
}

工作原理:

populateBean();

applyBeanPostProcessorsBeforeInitialization()遍历得到容器中所有的beanpostprocesser执行所有的postProcessBeforeInitialization 一旦返回null 就会跳出循环不再执行后边的beanpostprocesser

invokeinitmethod(beanName,wrappedbean,mbd)执行自定义初始化

applyBeanPostProcessorsAfterInitialization()遍历得到容器中所有的beanpostprocesser执行所有的postProcessAfterInitialization 一旦返回null 就会跳出循环不再执行后边的beanpostprocesser

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring 生命周期和 Bean 生命周期是密切相关的。在 Spring 容器中,每个 Bean 都有一个完整的生命周期,即从实例化、依赖注入,到销毁的过程,Spring 容器为我们管理了这些过程。Bean 生命周期包括 Bean 的创建、初始化、使用和销毁。具体来说,Spring 生命周期包括以下阶段: 1.实例化 Bean:容器根据配置文件或注解等方式创建 Bean 的实例。 2.设置 Bean 的属性值:容器会将 Bean 的属性值注入到 Bean 中,这是 Bean 生命周期的第二个阶段。Spring 提供了两种常用方式来实现 Bean 的属性注入:构造函数注入和 Setter 方法注入。 3.调用 Bean 的初始化方法:在 Bean 的所有属性被设置之后,Spring 容器会调用 Bean 的初始化方法,这个方法可以是自定义的方法,也可以是 Spring 提供的初始化方法。 4.使用 Bean:在 Bean 初始化完成之后,Spring 容器会将 Bean 注入到需要使用它的地方,比如其他 Bean 或者 Controller 等。 5.销毁 Bean:当 Bean 不再需要时,Spring 容器会调用 Bean 的销毁方法,这个方法可以是自定义的方法,也可以是 Spring 提供的销毁方法。 Bean 生命周期Spring 生命周期的一部分,它描述了一个 Bean 在 Spring 容器中的生命周期。Bean 生命周期包括以下阶段: 1.实例化 Bean:容器根据配置文件或注解等方式创建 Bean 的实例。 2.设置 Bean 的属性值:容器会将 Bean 的属性值注入到 Bean 中,这是 Bean 生命周期的第二个阶段。Spring 提供了两种常用方式来实现 Bean 的属性注入:构造函数注入和 Setter 方法注入。 3.调用 Bean 的初始化方法:在 Bean 的所有属性被设置之后,Spring 容器会调用 Bean 的初始化方法,这个方法可以是自定义的方法,也可以是 Spring 提供的初始化方法。 4.使用 Bean:在 Bean 初始化完成之后,Spring 容器会将 Bean 注入到需要使用它的地方,比如其他 Bean 或者 Controller 等。 5.销毁 Bean:当 Bean 不再需要时,Spring 容器会调用 Bean 的销毁方法,这个方法可以是自定义的方法,也可以是 Spring 提供的销毁方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Quare_feifei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值