IOC操作-bean管理-bean的生命周期

119 阅读1分钟
  1. 生命周期:从对象创建到对象销毁的过程
  2. bean生命周期
    1. 通过构造器创建bean实例(无参数构造或有参数构造)
      
    1. 为bean的属性设置值和对其他bean引用(调用set方法)
      
    1. 配置后置处理器后,执行初始化方法前的方法
      
    1. 调用bean的初始化方法(需要配置初始化的方法)
      
    1. 配置后置处理器后,执行初始化方法后的方法
      
    1. 获取bean使用
      
    1. 当容器关闭时,调用bean的销毁的方法(需要进行配置销毁的方法)
      
  1. 实例

User:

public class User {
    private String name;
    private String sex;
    public User()
    {
        System.out.println("我是User的无参构造方法");
    }
    public User(String name,String sex)
    {
        this.name=name;
        this.sex=sex;
        System.out.println("我是User的双参构造方法");
    }
    public User(String sex)
    {
        this.sex=sex;
        System.out.println("我是User的单参构造方法");
    }

    public void setName(String name) {
        this.name = name;
        System.out.println("调用setName方法");
    }

    public void setSex(String sex) {
        this.sex = sex;
        System.out.println("调用setSex方法");
    }
    public void initMethod()
    {
        System.out.println("我是初始化方法");
    }
    public void destroyMethod()
    {
        System.out.println("我是销毁方法");
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}

Post:

public class Post implements BeanPostProcessor {
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("我是初始化方法前的方法");
        return null;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("我是初始化方法后的方法");
        return null;
    }
}

test:

    public void test()
    {
        ClassPathXmlApplicationContext applicationContext=new ClassPathXmlApplicationContext("bean1.xml");
        User user = applicationContext.getBean("user", User.class);
        System.out.println(user);
        applicationContext.close();
    }

bean.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">
<bean id="user" class="com.zcy.www.entity.User" init-method="initMethod" destroy-method="destroyMethod">
    <constructor-arg name="sex" value="男"></constructor-arg>
    <property name="sex" value="晚来微风"></property>
</bean>
<bean id="beanPostProcessor" class="com.zcy.www.entity.Post"></bean>
</beans>

运行结果:

生命周期.png

  1. 小总结:无