1、bean对象的初始化与销毁:
在实体类中添加初始化与销毁的方法:
Person.class
public void init(){
System.out.println("对象被初始化")
}
public void destroy(){
System.out.println("对象被销毁")
}
ioc.xml
<!--
bean对象是初始化与销毁
scope属性:默认是singleton,若设置为prototype,销毁方法不会被调用
-->
<bean id="person6" class="com.msb.bean.Person" init-method="init" destroy-method="destroy" scope="prototype"></bean>
测试类MyTest.class
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("ioc.xml");
Person person6 = applicationContext.getBean("person6", Person.class);
System.out.println(person6);
//强制类型转换,获取close方法,关闭才能调用销毁方法
((ClassPathXmlApplicationContext)applicationContext).close();
2、配置bean对象初始化前后的处理方法
创建MyBeanPostProcessor继承BeanPostProcessor,从而去重写两个处理方法
package com.msb.bean;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
/**
* 配置bean对象初始化前后的处理方法
*/
public class MyBeanPostProcessor implements BeanPostProcessor {
/**
* 在每一个对象初始化前面执行
* @param bean
* @param beanName
* @return
* @throws BeansException
*/
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("postProcessBeforeInitialization:"+beanName);
return bean;
}
/**
* 在每一个对象初始化后面执行
* @param bean:表示创建的具体类对象
* @param beanName:表示bean的id属性
* @return
* @throws BeansException
*/
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
System.out.println("postProcessAfterInitialization:"+beanName);
return bean;
}
}
ioc.xml
<!--每一次创建对象之前与之后都会使用-->
<bean id="myBeanPostProcessor" class="com.msb.bean.MyBeanPostProcessor"></bean>
每一次创建对象都会使用到,因此这里的id与测试类中的调用无关,测试类中仍然只需创建bean对象,每次初始化对象后都会使用到。