zoukankan      html  css  js  c++  java
  • 10、spring注解学习(bean的生命周期)——BeanPostProcessor【接口】:bean的后置处理器

    1、创建Bird类并注入容器中

    @Component
    public class Bird {
        public Bird() {
            System.out.println("Bird的构造方法执行了");
        }
        
        //对象构造并属性赋值后执行
        @PostConstruct
        public void PostConstruct() {
            System.out.println("Bird的PostConstruct方法执行了");
        }
        
        @PreDestroy
        public void destroy() {
            System.out.println("Bird的销毁方法执行了");
        }
    }

    2、创建自定义bean的后置处理器并注入容器中

    /*
     * 后置处理器,初始化前后进行处理
     */
    @Component
    public class MyBeanPostProcessor implements BeanPostProcessor {
        
        /*
         * 参数1为容器刚创建的bean,beanName为bean的名字
         */
        //初始化前所需要做的处理
        @Override
        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
            System.out.println("postProcessAfterInitialization..."+beanName+"=>"+bean);
            //返回的对象可以是原来初始化的bean,也可以是包装之后的bean
            return bean;
        }
        
        //初始化后所需要做的处理
        @Override
        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
            System.out.println("postProcessBeforeInitialization..."+beanName+"=>"+bean);
            return bean;
        }
    
    }

    3、在spring配置类中配置扫描哪些包下的注解并注入容器

    /**
     * 测试bean的生命周期的配置
     */
    @Configuration
    @ComponentScan(value="com.atguigu")
    public class MainConfigOfLifeCycle {
    
    }

    4、创建测试方法进行测试

        /*
         * 测试自定义bean的后置处理器在bean初始化前后所做工作
         */
        @Test
        public void test04() {
            AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfLifeCycle.class);
            applicationContext.close();
        }

    执行结果:

     

    得出结论:

        postProcessAfterInitialization方法:初始化前所需要做的处理
        postProcessBeforeInitialization方法:初始化后所需要做的处理

  • 相关阅读:
    006使用python编写一个猜数字的程序
    002python函数、高级特性
    008python绘制五个五角星
    005使用 Python 生成 200 个激活码
    001python基础
    003python函数式编程,模块
    004python面向对象,错误,调试和测试
    Docker系列之(一):10分钟玩转Docker
    mongoDB系列之(一):10分钟玩转mongoDB
    Hadoop系列之(二):Hadoop集群部署
  • 原文地址:https://www.cnblogs.com/lyh233/p/12441634.html
Copyright © 2011-2022 走看看