Spring的IOC学习4(对象的初始化与销毁、配置bean对象初始化前后的处理方法)

1、bean对象的初始化与销毁
在实体类中添加初始化与销毁的方法:
Person.class

public void init(){
	System.out.println("对象被初始化")
}
public void destroy(){
	System.out.println("对象被销毁")
}

ioc.xml

	<!--
        bean对象是初始化与销毁
        scope属性:默认是singleton,若设置为prototype,销毁方法不会被调用
    -->
    <bean id="person6" class="com.msb.bean.Person" init-method="init" destroy-method="destroy" scope="prototype"></bean>

测试类MyTest.class

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("ioc.xml");
Person person6 = applicationContext.getBean("person6", Person.class);
System.out.println(person6);
//强制类型转换,获取close方法,关闭才能调用销毁方法
((ClassPathXmlApplicationContext)applicationContext).close();

2、配置bean对象初始化前后的处理方法
创建MyBeanPostProcessor继承BeanPostProcessor,从而去重写两个处理方法

package com.msb.bean;

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

/**
 * 配置bean对象初始化前后的处理方法
 */
public class MyBeanPostProcessor implements BeanPostProcessor {
    /**
     * 在每一个对象初始化前面执行
     * @param bean
     * @param beanName
     * @return
     * @throws BeansException
     */
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("postProcessBeforeInitialization:"+beanName);
        return bean;
    }

    /**
     * 在每一个对象初始化后面执行
     * @param bean:表示创建的具体类对象
     * @param beanName:表示bean的id属性
     * @return
     * @throws BeansException
     */
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("postProcessAfterInitialization:"+beanName);
        return bean;
    }
}

ioc.xml

<!--每一次创建对象之前与之后都会使用-->
    <bean id="myBeanPostProcessor" class="com.msb.bean.MyBeanPostProcessor"></bean>

每一次创建对象都会使用到,因此这里的id与测试类中的调用无关,测试类中仍然只需创建bean对象,每次初始化对象后都会使用到。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值