zoukankan      html  css  js  c++  java
  • 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
    第五步 执行销毁的方法

     

  • 相关阅读:
    Git远程库版本回滚
    微软Connect(); 2017大会梳理:Azure、数据、AI开发工具
    【实验手册】使用Visual Studio Code 开发.NET Core应用程序
    Ocelot API网关的实现剖析
    微软Tech Summit 2017,等你来打Call
    “.Net 社区大会”(dotnetConf) 2017 Day 1 Keynote: .NET Everywhere
    .NET平台微服务项目汇集
    .Net Core下通过Proxy 模式 使用 WCF
    .NET Core 2.0 正式发布信息汇总
    Visual Studio 2017 : client version 1.22 is too old
  • 原文地址:https://www.cnblogs.com/beanbag/p/13412465.html
Copyright © 2011-2022 走看看