Spring管理bean的生命周期

1: bean的创建:   如果我们默认的scope配置为Singleton的话, bean的创建实在Spring容器创建的时候创建; 如果scope的配置为Prototype的话,bena的创建是在getBean的时候创建的。 同样我们还可以在<bean>的配置中配置lazy-init = ”true“是bean的创建在getBean时。

2: 我们有时候可能在bean完成之后可能想要打开一些资源。 我们可以配置init-method="init" init方法在调用了类的默认构造函数之后执行

3: 如果我们想在bean销毁时,释放一些资源。 我们可以配置destroy-method="destroy" destroy方法在bean对象销毁时执行

package cn.gbx.serviceimpl;

import cn.gbx.service.PersonService;

public class PersonServiceImpl implements PersonService {
	
	public PersonServiceImpl() {
		System.out.println("我被实例化啦");
	}
	@Override
	public void save() {
		System.out.println("save 方法");
	}
	public void init() {
		System.out.println("打开资源。。。");
	}
	public void destroy() {
		System.out.println("关闭资源....");
	}
}

  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
 	<bean id="personService" class="cn.gbx.serviceimpl.PersonServiceImpl" init-method="init" destroy-method="destroy" >
 	</bean>
</beans>

  

package cn.gbx.Junit;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.gbx.service.PersonService;
import cn.gbx.serviceimpl.PersonServiceImpl;

public class SpringTest {
	@Test
	public void spring1() {
		ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
		PersonService ps = (PersonService)ctx.getBean("personService");
		ps.save();
	}

}

  

 

posted @ 2014-02-20 10:51  E_star  阅读(1811)  评论(0编辑  收藏  举报