spring: bean初始化和销毁方法
spring: bean初始化和销毁方法
蜡笔小小小新 发表于3年前
spring: bean初始化和销毁方法
  • 发表于 3年前
  • 阅读 11
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

摘要: 这是一个“让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>


共有 人打赏支持
粉丝 29
博文 112
码字总数 79661
×
蜡笔小小小新
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: