Spring学习——Bean的生命周期

Bean的生命周期

1、生命周期

Bean创建 —>初始化—>销毁的过程,在这个过程中可以做一些拓展
2、bean的生命周期

  1. 通过无参构造器创建bean实例
  2. 为bean设置属性值和对其他bean的引用
    bean初始化前做操作,BeanPostProcessor中的方法
  3. 调用bean的初始化方法
    bean初始化后做操作,BeanPostProcessor中的方法
  4. 可以使用bean
  5. 关闭容器,销毁容器

没有使用BeanPostProcessor中的方法的示例

public class Orders {   
private String name;
public Orders() {
System.out.println("1、无参构造被调用");    
}    
public void setName(String name) {        System.out.println("2、设置属性的值");        
this.name = name;    
}    
//创建初始化方法    
public void initMethod(){
System.out.println("3、执行初始化方法");    
}    
//创建销毁方法    
public void destroy(){
System.out.println("5、销毁了对象");    
} 
<bean class="com.chzu.spring05.Orders" id="order1" init-method="initMethod" 
destroy-method="destroy">    <property name="name" value="start"></property></bean>

测试结果:
1、无参构造被调用
2、设置属性的值
3、执行初始化方法
Orders{name='start'}

使用BeanPostProcessor

//创建一个类实现BeanPostPocessor接口,实现方法
public class PostUtil implements BeanPostProcessor{    
//初始化之前的操作    
@Override    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
System.out.println("初始化之前执行");        
return bean;   
}    
//初始化之后的操作    
@Override    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {        System.out.println("初始化之后执行");        
return bean;    
}
}
<!--配置后置处理器,当配置文件被加载时,会创建对象,Spring会识别其为后置处理器,会在所有bean创建时起作用-->
<bean class="com.chzu.spring05.PostUtil" id="postUtil"></bean>
执行结果:
1、无参构造被调用
2、设置属性的值
初始化之前执行
3、执行初始化方法
初始化之后执行
Orders{name='start'}

容器管理Bean的生命周期
可以自定义初始化和销毁方法,容器在Bean执行到当前生命周期的时候调用我们自定义的方法

1)、创建IOC容器
    单实例容器启动时创建对象
        对象创建完成,并赋值好,调用初始化方法
        容器关闭,调用销毁方法

多实例每次获取时创建对象
        对象创建完成,并赋值好,调用初始化方法
        多实例对象不进行销毁
@Bean(initMethod=“方法名” destoryMethod=“方法名”)

2)、InitializiBean接口、DisposableBean接口
    对象创建完成,并赋值好,会调用InitializigBean接口中的方法
    销毁则会调用DisposableBean接口中的方法

3)、PostConstruct注解,可以标注在方法上 ,进行初始化
        PreDestory注解,销毁

4)、BeanPostProcessor组件,接口 ,bean的后置处理器
            在bean初始化的前后做一些处理工作
            postProcessBeforInitialization  在bean创建之后但是在任何的初始化之前
            postProcessAfterInitialization   在bean任何的初始化之后

Spring底层对BeanPostProcessor的使用
applicationContextAware在bean对象初始化之前

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值