Spring bean 生命周期

首先建立Student类,构造get set方法

Spring bean 生命周期

代码如下

package com.jd.vo;

public class Student {

    private int age;
    static {
        System.out.println("静态代码块");    
    }
    {
        System.out.println("非静态代码块");
    }
    public Student() {
        System.out.println("构造方法");
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        System.out.println("setter");
        this.age = age;
    }
    public void init() {
        System.out.println("init");
    }
    public void destroy() {
        System.out.println("destroy");
    }
}

下面配置xml

 <bean id="student" class="com.jd.vo.Student" destroy-method="destroy" init-method="init" p:age="12"> </bean>
这里init-method="init" 作用bean实例化

init-method:在设置bean的属性后执行的自定义初始化方法,注意:①、该方法不能有参数;②、对象每创建一次就会执行一次该方法;

建立测试类Test

Spring bean 生命周期

 

运行结果如下

Spring bean 生命周期

最后少了一个销毁destroy

destroy-method:该参数中的方法只有bean标签属性scope为singleton且关闭Spring IOC容器时才会被调用,注意:该方法不能有参数

Spring bean 生命周期

scope默认singleton

原因:

Spring bean 生命周期

其中并无销毁方法。

改进:

Spring bean 生命周期

输出结果可得

Spring bean 生命周期

以下为其他内容:

1.bean的继承关系

Spring bean 生命周期

这里给school赋值,但是却调用Student(这是因为这里Student类继承school类)

Spring bean 生命周期

2.depends-on的作用:   

<bean class="com.jd.vo.Student" depends-on="school"/>

Spring bean 生命周期

    <!-- depends-on="school"起到谁在前的作用,如果没有,则按照默认顺序 -->