您的位置:首页 > 编程语言 > Java开发

spring: bean初始化和销毁方法

2015-03-14 00:00 393 查看
摘要: 这是一个“让spring容器自动在bean设置注入之前和bean销毁之后调用方法”的实例:

1、在bean设值注入之后:实现InitializingBean接口 / 在bean里配置<init-method>

2、在bean销毁之前:实现DisposableBean接口 / 在bean里配置<destroy-method>

3、这些方法的作用例如:简历数据库连接,读取初始化资源,关闭数据库连接,关闭磁盘资源等等

package exm.spring.bean;

import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;

public class User implements InitializingBean, DisposableBean{

private String name;

private String password;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

/**
* 在bean销毁之前调用
*/
@Override
public void destroy() throws Exception {

System.out.println("--------destroy()--------");
}

/**
* 在bean设值注入之后调用
*/
@Override
public void afterPropertiesSet() throws Exception {

System.out.println("--------afterPropertiesSet()--------");

}

public void initBean()
{
System.out.println("<init-method>");
}

public void destroyBean()
{
System.out.println("<destroy-method>");
}

}

package exm.spring.bean;

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

public class Test {

public static void main(String[] args)
{
ApplicationContext aac = new ClassPathXmlApplicationContext("bean.xml");

Service service = aac.getBean("service", Service.class);

//每次从Service得到的User都不一样
System.out.println(service.createUser());
System.out.println(service.createUser());

((ClassPathXmlApplicationContext)aac).close();
}
}

<!-- 配置文件 -->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
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.xsd"> 
<bean id="user" class="exm.spring.bean.User" scope="prototype" init-method="initBean" destroy-method="destroyBean">
</bean>

<!-- 如果要在Service中每次获得User,则在配置中User不要注入到Service -->
<bean id="service" class="exm.spring.bean.Service">
</bean>

</beans>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐