码迷,mamicode.com
首页 > 编程语言 > 详细

Spring学习笔记--initmethod和构造函数、setter方法的加载顺序

时间:2014-06-21 16:48:48      阅读:2115      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   code   ext   

    今天学习了一下spring中bean的初始化和销毁,突然想了解一下初始化方法跟构造函数及setter方法注入的执行顺序,记录在此,仅作为学习笔记。

    当实例化一个bean时,可能需要执行一些初始化操作来确保该bean处于可用状态。同样地,当不再需要bean时,将其从容器中移除是,我们可以还需要按顺序

执行一些清除工作。

package com.zp.chapter2;

public class Auditorium {
    private String name;

    public void doBefore() {
        System.out.println("bean初始化操作!");
    }

    public void doAfter() {
        System.out.println("bean销毁操作!");
    }

    public Auditorium() {
        System.out.println("bean构造函数");
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        System.out.println("setter方法注入");
        this.name = name;
    }

    public void display() {
        System.out.println("display()方法");
    }
}

配置文件中bean的声明

<bean id="auditorium" class="com.zp.chapter2.Auditorium" init-method="doBefore" destroy-method="doAfter">
        <property name="name" value="abcd"></property>
</bean>

 

测试代码

@Test
public void Test5() throws PerformanceException {
        AbstractApplicationContext app = new ClassPathXmlApplicationContext(
                "com/zp/chapter2/springbeans.xml");
        Auditorium auditorium=(Auditorium) app.getBean("auditorium");
        auditorium.display();
        app.registerShutdownHook();
}

注意:这里的registerShutdownHook()是AbstractApplicationContext中的一个钩子方法,在jvm退出时关闭上下文;


输出结果:

bean构造函数
setter方法注入
bean初始化之前的操作!
display()方法
bean销毁之后 的操作!


所以,可以看出执行顺序是构造函数-〉setter方法注入-〉initmethod->调用的方法-〉destroymethod

 

Spring学习笔记--initmethod和构造函数、setter方法的加载顺序,布布扣,bubuko.com

Spring学习笔记--initmethod和构造函数、setter方法的加载顺序

标签:des   style   class   blog   code   ext   

原文地址:http://www.cnblogs.com/naruto469/p/3800487.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!