spring学习笔记-IOC容器中bean的生命周期和后置处理器

1.bean的生命周声明

单例bean的生命周期: 从容器的创建开始到容器的关闭结束。
实例bean的生命周期: 从容器中获取对象开始,到自行销毁对象结束。

我们可以使用init-method和destroy-method方法为bean对象指定初始化对象或者销毁对象时需要做的操作。

单例bean

1. 在对象的class中创建需要执行的方法

		public void initBean() {
			System.out.println("初始化方法");
		}
		public void destroyBean() {
			System.out.println("销毁方法");
		}

2. 在IOC中指定init-method="“和destroy-method=”"需要调用的方法

<bean id="user" class="com.hao.spring.user.User" init-method="initBean" destroy- method="destroyBean">
	<property name="userName" value="qianghao"></property>
	<property name="sex" value="man"></property>
	<property name="age" value="25"></property>
</bean>

3. 测试调用:
调用顺序:构造器→指定的对象初始化方法→容器关闭→指定的对象销毁方法。我们从控制台的信息可以看到,bean先初始化,然后才执行了main中的打印方法。
在这里插入图片描述

多实例bean

多实例bean和单例bean的区别就是方法的调用顺序
IOC容器创建→获取兑现时执行构造器→指定的对象初始化方法
多实例bean并不会自行销毁,所以不会执行销毁方法
在这里插入图片描述

2. bean的后置处理器

spring提供了一个BeanPostProcessor接口,该接口是为了在初始化bean对象的前后进行一些操作而准备的。共有两个方法:
postProcessBeforeInitialization;
postProcessAfterInitialization;
在这里插入图片描述
参数:bean为要进行初始化的队形,beanName为对象在IOC容器中的id名称
创建后期处理器:

  1. 创建一个实现了BeanPostProcessor接口的类
package com.hao.spring.user;

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

public class PostProcess implements BeanPostProcessor {
      @Override
      public Object postProcessBeforeInitialization(Object bean, String  beanName) throws BeansException {
            System.out.println("postProcessBeforeInitialization被执行,初始化 了"+beanName+",并返回"+bean);
            User s = (User)bean;
            s.setUserName("李四");
            System.out.println("Before修改后的bean"+s);
            return bean;
      }

      @Override
      public Object postProcessAfterInitialization(Object bean, String  beanName) throws BeansException {
            System.out.println("postProcessAfterInitialization被执行,初始化了"+beanName+",并返回"+bean);
            User s = (User)bean;
            s.setUserName("张三");
            System.out.println("After修改后的bean"+s);
            return s;
      }
}
  1. 并将该类注册在IOC容器中
    在这里插入图片描述
  2. 测试后置处理器
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值