Spring IOC 05 创建带有生命周期的bean、bean的后置处理器

1、创建带有生命周期的bean,生命周期:bean的创建到销毁
(1)在Book类中添加以下两个方法:

public class Book {

    public void myinit(){
        System.out.println("图书初始化方法。。。");
    }

    public void myDestory(){
        System.out.println("图书销毁方法。。。");
    }
}

(2)在ioc.xml配置文件中添加bean
可以为bean自定义一些生命周期方法:spring在创建和销毁的时候会调用指定的方法

<bean id="book" class="atguigu.bean.Book" init-method="myinit" destroy-method="myDestory">
</bean>

(3)理解ioc容器中注册的bean的生命周期:
1)单例bean:容器启动的时候就好创建好,容器关闭也会销毁创建的bean
生命周期:(容器启动)构造器调用===>初始化方法调用====》(容器关闭)销毁方法调用。
2)多实例bean:获取的时候才创建
生命周期:获取bean的时候(构造器===》初始化方法)====》容器关闭也不会调用bean的销毁方法;什么时候用完则自动销毁。

2、bean的后置处理器:Spring的一个接口:可以在bean的初始化前后调用方法
(1)bean的后置处理器编写步骤
1)编写后置处理器的实现类
2)将后置处理器注册在配置文件中
(2)编写后置处理器的实现类(BeanPostProcessor)

public class MyBeanPostProcessor implements BeanPostProcessor {

    /**
     * postProcessBeforeInitialization
     *  初始化之前调用
     *  Object bean:将要初始化的bean
     */
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {

        System.out.println("["+beanName+"]bean将要调用初始化方法。。。这个bean是这样的:["+bean+"]");
//        返回传入的bean
        return bean;
    }

    /**
     * postProcessAfterInitialization
     *     初始化方法之后完成
     *  Object bean,
     *  String beanName:bean在xml中配置的id
     *
     */
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("["+beanName+"]bean初始化方法调用完了。。。这个bean是这样的:["+bean+"]");
        return bean;
    }
}

(3)在配置文件中注册

<bean id="myBeanPostProcessor" class="atguigu.bean.MyBeanPostProcessor">
</bean>

(4)理解后置处理器的生命周期
在后置处理器中,单、双实例都有着同样的生命周期:(容器启动)构造器调用====》后置处理器Before====》初始化方法调用====》后置处理器After====》(容器关闭)销毁方法调用
无论bean是否有初始化方法;后置处理器都会默认有;还会继续工作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值