首页 > 代码库 > Spring学习笔记--initmethod和构造函数、setter方法的加载顺序
Spring学习笔记--initmethod和构造函数、setter方法的加载顺序
今天学习了一下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="http://www.mamicode.com/abcd"></property></bean>
测试代码
@Testpublic 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。