Spring -> IOCxmlBean的生命周期

  • 1.构造函数

  • 2.set方法

  • 3.后置处理器Before

  • 4.初始化

  • 5.后置处理器After

  • 6.获取了bean对象

  • 7.关闭

  • 1.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--标签名శ:init method描述:设置bean属性后要调用的自定义初始化方法的名称。-->
    <!--标签名称:destroy-method描述:在bean factory关闭时要调用的自定义销毁方法的名称。-->
    <bean id="beanLifeCycle" class="test10month.test1012.BeanLifeCycle" init-method="initMethod"
          destroy-method="destroy">
        <property name="string" value="这是参数"/>
    </bean>
    <bean id="beanPostProcessorClass" class="test10month.test1012.BeanPostProcessorClass"/>
</beans>

2.类:

class BeanLifeCycle {
  private String string;

  public BeanLifeCycle() {
    System.out.println("启动构造函数");
  }

  @Override
  public String toString() {
    return "BeanLifeCycle{" + "string='" + string + '\'' + '}';
  }

  public void setString(String string) {
    this.string = string;
    System.out.println("这是set方法");
  }

  public void initMethod() {
    System.out.println("这是初始化");
  }

  public void destroy() {
    System.out.println("这是关闭");
  }
}

3.实现后置处理器的类


class BeanPostProcessorClass implements BeanPostProcessor {
  @Override
  public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
    System.out.println("这是后置处理器Before");
    return bean;
  }

  @Override
  public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
    System.out.println("这是后置处理器After");
    return bean;
  }
}

4.测试类

package test10month.test1012;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 功能描述:Bean的生命周期
 * 1.构造函数
 * 2.set方法
 * 3.后置处理器Before
 * 4.初始化
 * 5.后置处理器After
 * 6.获取了bean对象
 * 7.关闭
 * @version 1.0
 * @className BeanLifeCycleTest
 * @author: 罗德
 * @create: 2020-10-12 14:09
 */
public class BeanLifeCycleTest {
  public static void main(String[] args) {
    var context = new ClassPathXmlApplicationContext("test10month/test1012/BeanLifeCycleSpring.xml");
    var beanLifeCycle = context.getBean("beanLifeCycle", BeanLifeCycle.class);
    System.out.println("获取了bean对象");
    //自始至终我们只主动调用了下面的beanLifeCycle默认的toString()
    System.out.println(beanLifeCycle);
    //手动close;关闭的是配置,不是Bean对象
    context.close();
    /** 控制台输出:
     * 启动构造函数
     * 这是set方法
     * 这是后置处理器Before
     * 这是初始化
     * 这是后置处理器After
     * 获取了bean对象
     * BeanLifeCycle{string='这是参数'}
     * 这是关闭
     */
  }
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值