bean的生命周期(含后置处理器)

bean的生命周期

我们先讲不含后置处理器的:
(1)通过构造器创建bean实例(无参数构造)
(2)为bean的属性设置值和对其他bean引用(调用set方法)
(3)调用bean的初始化的方法(需要进行配置初始化的方法)。
(4) bean可以使用了对象获取到了).
(5)当容器关闭时候,调用bean的销毁的方法(需要进行配置销毁的方法)

先创建一个我们要调用的bean 然后我会在各个步骤上进行输出。

package cn.zsp.spring5.bean;

public class Order {
    private String pname;
//            (1)通过构造器创建bean实例(无参数构造)
//            (2)为bean的属性设置值和对其他bean引用(调用set方法)↓
//            (3)调用bean的初始化的方法(需要进行配置初始化的方法)。
//            (4) bean可以使用了对象获取到了).
//            (5)当容器关闭时候,调用bean的销毁的方法(需要进行配置销毁的方法)·
    public Order() {
        System.out.println("这是bean的第一步使用无参构造");
    }

    public void setPname(String pname) {
        System.out.println("这是bean的第二步对bean设置值");
        this.pname = pname;
    }
    public void initMethod(){
        System.out.println("这是第三步进行初始化");
    }
    public void destroyMethod(){
        System.out.println("这是第五步销毁bean");
    }

}

配置xml文件,特别注意这里的初始化还有销毁方法方法我们要自己设置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
 <bean id="order" class="cn.zsp.spring5.bean.Order" init-method="initMethod" destroy-method="destroyMethod">
 <property name="pname" value="zsp"></property>
 </bean>

</beans>

第三步使用测试类:没啥说的,就是记得调用销毁方法

    @Test
    public void show5(){
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("bean4.xml");
        Order order = context.getBean("order", Order.class);
        System.out.println("这是bean的第四部调用实例");
        System.out.println(order);
        context.close();
    }

在这里插入图片描述
这是演示结果

bean的生命周期(含后置处理器)

在前面的基础上多了创造一个后置处理器的类:注意要继承BeanPostProcessor 并且重写两个方法

(1)通过构造器创建bean实例(无参数构造)
(2)为bean的属性设置值和对其他bean引用(调用set方法)
(3)把bean实例传递bean后置处理器的方法
(4)调用bean的初始化的方法(需要进行配置初始化的方法)u
(5))把bean实例传递bean后置处理器的方法
(6) bean可以使用了(对象获取到了)u
(7)当容器关闭时候,调用bean的销毁的方法(需要进行配置销毁的方法)以

package cn.zsp.spring5.bean;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.lang.Nullable;

public class MyBeanPost implements BeanPostProcessor {
    @Override
    public  Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("这是第三步之前的后置处理器方法");
        return bean;
    }

    @Override
    public  Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("这是第三步之后的后置处理器方法");
        return bean;
    }
}

然后修改一下配置文件:

package cn.zsp.spring5.bean;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.lang.Nullable;

public class MyBeanPost implements BeanPostProcessor {
    @Override
    public  Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("这是第三步之前的后置处理器方法");
        return bean;
    }

    @Override
    public  Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("这是第三步之后的后置处理器方法");
        return bean;
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值