Spring5 -- 学习笔记 - 3.IoC容器-操作Bean管理(bean的生命周期)

Spring5 – 学习笔记 - 3.IoC容器

   1、bean的生命周期

     第一:通过构造器创建bean实例对象(调用无参构造)。
     第二:为bean的属性设置相应的值和对其他bean的引用(调用类属性的set方法)。
     第三:把bean实例传递给bean后置处理器的方法postProcessBeforeInitialization。
     第四:调用bean里的初始化方法(需要在xml配置文件中进行配置初始化方法)。
     第五:把bean实例传递给bean后置处理器的方法postProcessAfterInitialization。
     第六:bean创建的对象实例可以使用(对象实例获取到了)。
     第七:当实例对象销毁时,调用bean的销毁方法(需要在xml配置文件中进行配置销毁方法)。

   2、代码演示

     实体类的代码。

//爱好类
public class Hobby {

    private String hname;

    public Hobby(){
        System.out.println("hobby类的构造方法。。。。");
    }

    //创建实例对象前的初始化方法
    public void initMethod(){
        System.out.println("hobby类的initMethod方法。。。。");
    }

    //销毁实例对象前的销毁方法
    public void destroyMethod(){
        System.out.println("hobby类的destroyMethod方法。。。。");
    }

    public void setHname(String hname) {
        System.out.println("hobby类hname属性的set方法。。。。");
        this.hname = hname;
    }

    @Override
    public String toString() {
        return "Hobby{" +
                "hname='" + hname + '\'' +
                '}';
    }
}

     自己创建的后置处理器的代码。


//自己的后置处理器
public class MyBeanPostProcessor implements BeanPostProcessor {

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("后置处理器的postProcessBeforeInitialization方法。。。。");
        return bean;
    }

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

}

     xml配置文件代码。


    <!--
        init-method属性值是bean的初始化方法,在创建对象实例时调用
        destroy-method属性值是bean的销毁方法,在杀掉、销毁实例对象时调用
    -->
    <bean id="hobby1" class="com.tt.collectiontype.bean.Hobby" init-method="initMethod" destroy-method="destroyMethod">
        <property name="hname" value="羽毛球"></property>
    </bean>

    <!--自己的后置处理器-->
    <bean id="myBeanPostProcessor" class="com.tt.collectiontype.bean.MyBeanPostProcessor"></bean>

     测试方法代码。

    @Test
    public void test1(){
        ApplicationContext context=new ClassPathXmlApplicationContext("bean5.xml");
        Hobby hobby1=context.getBean("hobby1", Hobby.class);
        System.out.println("hobby类的实例对象创建完成。。。。");
        System.out.println(hobby1);
        ((ClassPathXmlApplicationContext) context).close();
    }

     测试结果。
在这里插入图片描述
     打印结果表示确实为之前的七步:
       1、调用无参构造。
       2、调用类属性的set方法和其他bean的引用。
       3、后置处理器的方法postProcessBeforeInitialization。
       4、初始化方法。
       5、后置处理器的方法postProcessAfterInitialization。
       6、获取到对象实例。
       7、销毁方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值