Bean的生命周期

设置bean的init-method可以指定bean的初始化方法,destroy-method可以指定销毁时调用的方法,在bean的整个生命周期中,调用方法的顺序为:构造方法——>setter方法(如果需要)——>init()方法——>destroy()方法。

<!--设置bean的初始化和销毁方法 -->
    <bean id="car" class="com.ustc.yi.cycle.Car"
          init-method="init"
          destroy-method="destroy"
            >
       <property name="brand" value="奥迪"></property>
    </bean>

init和deatroy都声明在Car类中

 

另外可以通过实现BeanPostProcessor接口来重写bean的初始化方法和销毁方法。

实现BeanPostProcessor接口,并具体提供

Object postProcessBeforeInitialization(Object bean, String beanName):在init-methord之前被调用

Object postProcessAfterInitialization(Object bean, String beanName):init-methord之后被调用

的实现

bean:bean实例本身

beanName:IOC容器配置的bean的名字

返回值:实际上是返回给用户的bean,可以在上面的两个方法中修改返回的bean,甚至返回一个新的bean

 

package com.ustc.yi.cycle;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

/**
 * Created by Yi on 2019/5/27.
 */
public class MyBeanPostProcessor implements BeanPostProcessor{

    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("postProcessBeforeInitialization"+bean+", "+beanName);
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("postProcessAfterInitialization"+bean+", "+beanName);
        //返回一个新的对象
        if("car".equals(beanName)){
            Car car=new Car();
            car.setBrand("宝马");
            return car;
        }

        return bean;
    }
}

在xml文件中配置bean的后置处理器,不需要id,IOC容器会自动识别


    <!--配置bean的后置处理器,不需要id,IOC容器自动识别是一个BeanPostProcessor-->
    <bean class="com.ustc.yi.cycle.MyBeanPostProcessor"/>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值