• IOC(十)


    Bean的生命周期就是对象从创建到销毁的过程, 一共有七步:

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

    实例演示如下:

    创建MyBean类:

    public class MyBean {
    
        //创建无参数构造器
        public MyBean() {
            System.out.println("1.执行无参数构造器创建bean实例");
        }
    
        private String name;
        public void setName(String name) {
            this.name = name;
            System.out.println("2.调用set方法设置属性值");
        }
    
        //创建初始化的执行方法
        public void initMethod(){
            System.out.println("4.执行初始化的方法");
        }
    
        //创建销毁的执行方法
        public void destroyMethod(){
            System.out.println("7.执行销毁的方法");
        }
    }

    创建MyBeanPost类:(实现BeanPostProcessor接口)

    public class MyBeanPost implements BeanPostProcessor {
        @Override
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            System.out.println("3.在初始化之前执行的方法");
            return bean;
        }
    
        @Override
        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            System.out.println("5.在初始化之后执行的方法");
            return bean;
        }
    }

    创建配置文件:(实现了BeanPostProcessor的bean就是后置处理器, 在配置文件中配好后, Spring会为配置文件中的所有bean添加此后置处理器)

    <?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="myBean" class="com.ryan.spring5.lifeCycle.MyBean" init-method="initMethod" destroy-method="destroyMethod">
            <property name="name" value="张辽"></property>
        </bean>
    
        <!--配置后置处理器-->
        <bean id="myBeanPost" class="com.ryan.spring5.lifeCycle.MyBeanPost"></bean>
    </beans>

    测试:

    public class Test {
        public static void main(String[] args) {
    
            ApplicationContext context = new ClassPathXmlApplicationContext("file:src\com\ryan\spring5\lifeCycle\bean.xml");
            MyBean myBean = context.getBean("myBean", MyBean.class);
            System.out.println("6.获取创建实例对象: " + myBean);
    
            //手动销毁bean实例, 需要强转成ClassPathXmlApplicationContext类型才能调用close方法
            //*强转成ClassPathXmlApplicationContext需要加载配置文件时使用ClassPathXmlApplicationContext方法
            ((ClassPathXmlApplicationContext)context).close();
        }
    }

    输出:

  • 相关阅读:
    python3----练习......
    python3----练习题(....)
    python3----requests
    python3----练习题(爬取电影天堂资源,大学排名,淘宝商品比价)
    python3----练习题(图片转字符画)
    python3----练习题(....)
    ConfigParser 读写配置文件
    数据驱动ddt+excel数据读取
    数据驱动ddt
    expected_conditions判断页面元素
  • 原文地址:https://www.cnblogs.com/Ryan368/p/13898368.html
Copyright © 2020-2023  润新知