spring对象的生命周期:
生命周期的执行过程如下:
public class UserInfo {
static {
System.out.println("静态方法");
}
{
System.out.println("非静态方法");
}
private String name;
public String getName() {
System.out.println("get方法");
return name;
}
public void setName(String name) {
System.out.println("set方法");
this.name = name;
}
public UserInfo(){
System.out.println("构造方法");
}
public void init() {
System.out.println("init方法");
}
public void destroy() {
System.out.println("destroy方法");
}
}
public class Test {
public static void main(String[] args) {
ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("application.xml");
Object object = applicationContext.getBean("userInfo");
System.out.println(object);
applicationContext.close();
}
}
<bean id="userInfo" class="com.jd.vo.UserInfo"
lazy-init="true" scope="singleton" init-method="init"
destroy-method="destroy" >
<property name="name" value="Tom"></property>
</bean>
代码执行结果如下:
注意:
只有对象是单例的时候才会执行destroy方法,多例的时候不会执行;
<bean id="userInfo" class="com.jd.vo.UserInfo"
lazy-init="true" scope="prototype" init-method="init"
destroy-method="destroy" >
单例对象(与容器共存亡):
出生:容器创建出生对象
活着:只要容器存在,对象就一直活着可用
死亡:容器销毁,对象消亡
多例对象:
出生:每次调用时,容器会为我们创建对象
活着:只要对象在使用过程中,就一直活着可用
死亡:当对象长时间不用,并且也没有其他对象引用时,由java的垃圾回收器回收