Spring的bean生命:
通过几个示例来演示:
示例1:最基本的示例
在这里我们建立一个CycleListTest的JavaBean
public class CycleLifeTest{
private String say;
public void setSay(String say) {
System.out.println("set方法");
this.say = say;
}
public void sayTest(){
System.out.println("CycleLifeTest类中的sayTest方法"+say);
}
public void init(){
System.out.println("这是初始化");
}
public void destory(){
System.out.println("这是销毁方法");
}
}
输出结果:set方法
这是初始化
CycleLifeTest类中的sayTest方法哈哈
这是销毁方法
示例3:实现BeanNameAware,实现其方法setBeanName()
在这里我们建立一个CycleListTest的JavaBean
public class CycleLifeTest implements BeanNameAware{
private String say;
public void setSay(String say) {
System.out.println("set方法");
this.say = say;
}
public void sayTest(){
System.out.println("CycleLifeTest类中的sayTest方法"+say);
}
public void init(){
System.out.println("这是初始化");
}
public void destory(){
System.out.println("这是销毁方法");
}
@Override
public void setBeanName(String arg0) {
// TODO Auto-generated method stub
System.out.println("实现BeanNameAware接口"+arg0);
}
}
输出结果:set方法
实现BeanNameAware接口cycleLifeTest
这是初始化
CycleLifeTest类中的sayTest方法哈哈
这是销毁方法
示例4:在实现BeanNameAware接口之上又实现BeanFactoryAware接口,其方法setBeanFactory()
这里的applicationContext.xml同上;
在这里我们建立一个CycleListTest的JavaBean
public class CycleLifeTest implements BeanNameAware,BeanFactoryAware{
private String say;
public void setSay(String say) {
System.out.println("set方法");
this.say = say;
}
public void sayTest(){
System.out.println("CycleLifeTest类中的sayTest方法"+say);
}
public void init(){
System.out.println("这是初始化");
}
public void destory(){
System.out.println("这是销毁方法");
}
@Override
public void setBeanName(String arg0) {
// TODO Auto-generated method stub
System.out.println("实现BeanNameAware接口"+arg0);
}
@Override
public void setBeanFactory(BeanFactory arg0) throws BeansException {
System.out.println("实现BeanFactoryAware接口"+arg0);
}
}
输出结果:set方法
实现BeanNameAware接口cycleLifeTest
实现BeanFactoryAware接口 org.springframework.beans.factory.support.DefaultListableBeanFactory@53ab04: defining beans [cycleLifeTest]; root of factory hierarchy
这是初始化
CycleLifeTest类中的sayTest方法哈哈
这是销毁方法
示例5:上述和BeanPostProcessor连用
<?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.0.xsd"> <bean id="cycleLifeTest" class="cn.csdn.bean.CycleLifeTest" init-method="init" destroy-method="destory"> <property name="say"> <value>哈哈</value> </property> </bean> <bean id="postService" class="cn.csdn.bean.PostService"></bean> </beans>
建立一个CycleListTest的JavaBean同上
建立一个PostService的JavaBean实现BeanPostProcessor接口
public class PostService implements BeanPostProcessor{
/**在初始化之后调用这个方法*/
@Override
public Object postProcessAfterInitialization(Object bean, String arg1)
throws BeansException {
System.out.println("postProcessAfterInitialization");
return bean;
}
/**在初始bean之前调用的这个方法,在init方法之前执行,在set方法之后*/
@Override
public Object postProcessBeforeInitialization(Object bean, String arg1)
throws BeansException {
System.out.println("");
/**instanceof 判断前者是否是后者的一个实例*/
if(bean instanceof CycleLifeTest){
System.out.println("******************************");
((CycleLifeTest) bean).setSay("嘿嘿");
}
System.out.println("postProcessBeforeInitialization");
return bean;
}
}
输出结果:set方法
继承了BeanNameAwarecycleLifeTest
继承了BeanFactoryAwareorg.springframework.beans.factory.support.DefaultListableBeanFactory@100bac2: defining beans [cycleLifeTest,postService]; root of factory hierarchy
******************************
set方法
postProcessBeforeInitialization
初始化
postProcessAfterInitialization
CycleLifeTest类中的sayTest方法嘿嘿