Bean的七个生命周期

结果

image.png

测试

@Test
    public void testLife() {
        //低级容器BeanFactory 高级容器ApplicationContext
//        BeanFactory
        //加载spring配置文件
        ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("bean.xml");
        //获取配置创建的类 user.class是要返回的类型
        User user = applicationContext.getBean("user", User.class);
        System.out.println("4.获取对象");
        System.out.println(user);
        user.add();
        //执行close才会调用销毁方法
        applicationContext.close();

    }

User

package com.kang.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author klr
 * @create 2020-10-05-14:47
 */
@Data
//@NoArgsConstructor
@AllArgsConstructor
public class User {
    private int id;
    private String name;


    public void setId(int id) {
        this.id = id;
        System.out.println("2.使用set方法给属性赋值");
    }

    public User() {
        System.out.println("1.执行无参构造创建实例");
    }

    public void add() {
        System.out.println("添加一个User");
    }

    public void init() {
        System.out.println("3.执行初始化方法");
    }

    public void destroy() {
        System.out.println("5.执行销毁方法");
    }
}

BeanPostProcessor

package com.kang.beanpostprocessor;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

/**
 * @author klr
 * @create 2020-10-07-13:09
 */
public class MyBeanPostProcessor 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;
    }
}

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"
       xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<!--    配置User对象的创建-->
<!--    p命名空间底层是set方法注入,不是有参构造注入,用有参构造器不行,只能用无参构造器-->
    <bean id="user" class="com.kang.pojo.User"  p:name="王五" p:id="4" init-method="init" destroy-method="destroy">
    </bean>

<!--    后置处理器-->
    <bean id="myBeanProcessor" class="com.kang.beanpostprocessor.MyBeanPostProcessor"></bean>

</beans>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。