• Spring Bean生命周期


    Spring Bean生命周期

    生命周期

    从对象创建到对象销毁的过程。

    bean生命周期

    1. 通过构造器创建bean实例。
    2. 为bean的属性设置值和对其他bean的引用。(调用set方法)
    3. 调用bean的初始化的方法(需要进行配置初始化的方法)
    4. bean可以使用(获取到对象)
    5. 当容器关闭的时候,调用bean的销毁的方法(需要进行配置销毁的方法)

    演示bean的生命周期

    public class Orders {
        private String oname;
    
        public Orders() {
            System.out.println("第一步 执行无参数构造创建 bean 实例");
        }
    
        public void setOname(String oname) {
            System.out.println("第二步 调用 set 方法设置属性值");
            this.oname = oname;
        }
    
        //创建执行的初始化的方法
        public void initMethod() {
            System.out.println("第三步 执行初始化的方法");
        }
    
        //创建执行的销毁的方法
        public void destroyMethod() {
            System.out.println("第五步 执行销毁的方法");
        }
    }
    <bean id="orders" class="cn.xupengzhuang.spring5.pojo.Orders"
          init-method="initMethod"
          destroy-method="destroyMethod">
        <property name="oname" value="手机"></property>
    </bean>
    @Test
    public void testOrders(){
        //1 加载 spring 配置文件
        ClassPathXmlApplicationContext context =
                new ClassPathXmlApplicationContext("bean5.xml");
        //2 获取配置创建的对象
        Orders orders = context.getBean("orders", Orders.class);
        System.out.println("第四步 获取创建 bean 实例对象");
        System.out.println(orders);
        //手动让 bean 实例销毁
        context.close();
    
    }

    控制台打印

    第一步 执行无参数构造创建 bean 实例
    第二步 调用 set 方法设置属性值
    第三步 执行初始化的方法
    第四步 获取创建 bean 实例对象
    cn.xupengzhuang.spring5.pojo.Orders@1500955a
    第五步 执行销毁的方法

    bean的后置处理器

    bean的生命周期有七步

    1. 通过构造器创建bean实例。(无参数构造)
    2. 为bean的属性设置值和其他bean引用。(调用set方法)
    3. 把bean实例传递给bean后置处理器方法(postProcessBeforeInitialization)
    4. 调用bean的初始化方法,
    5. 把bean实例传递给bean后置处理器的方法(postProcessAfterInitialization)
    6. bean可以使用(获取到对象)。
    7. 当容器关闭的时候,调用bean的销毁方法。(需要进行配置销毁bean的方法)

    操作演示

    public class MyBeanPost 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;
        }
    }
    <bean id="myBeanPost" class="cn.xupengzhuang.spring5.test.MyBeanPost"></bean>

    执行testOrders()测试方法,控制台打印

    第一步 执行无参数构造创建 bean 实例
    第二步 调用 set 方法设置属性值
    在初始化之前执行
    第三步 执行初始化的方法
    在初始化之后执行
    第四步 获取创建 bean 实例对象
    cn.xupengzhuang.spring5.pojo.Orders@60285225
    第五步 执行销毁的方法

     

  • 相关阅读:
    Effective STL 学习笔记 Item 16:vector, string & C API
    在 Python 中使用 GDB 来调试 转载
    Effective STL 学习笔记14: Use reserve to avoid unnecessary reallocations.
    Effective STL 学习笔记: 多用 vector & string
    Effective STL 学习笔记: Thread Safety and STL Container
    Effective STL 笔记 -- Item 6 ~ 7: Container and Object Pointer
    How to omit h1 title heading in HTML export
    Introduction to MWB Minor Mode
    Effective STL 笔记 -- Item 9: Choose carefully among erasing options
    Redis简介
  • 原文地址:https://www.cnblogs.com/beanbag/p/13412465.html
Copyright © 2020-2023  润新知