美文网首页
spring bean 初始化顺序

spring bean 初始化顺序

作者: 晏雪峤_美杜莎 | 来源:发表于2021-05-16 07:55 被阅读0次

    spring Bean初始化一般有三种:

    1. @PostConstruct 标注方法.

    2. 实现InitializingBean 接口的afterPropertiesSet 方法。

    3. @Bean 注解的initMethod 方法.

    上述3中方式在同一Bean 中初始化, 那么1, 2, 3 的执行顺序如何?


    代码演示:

    /**
     *  Bean 初始化演示.
     */
    @Configuration
    public class MyBeanInitializationDemo {
    
        public static void main(String[] args) {
            AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
            applicationContext.register(MyBeanInitializationDemo.class);
            // 启动
            applicationContext.refresh();
            applicationContext.close();
        }
    
    
        @Bean(initMethod = "myDefineInitMethod")
        public Person getPerson() {
            return new Person();
        }
    
    
        public class Person implements InitializingBean {
            private int age;
            private String name;
    
            @PostConstruct
            public void  init() {
                System.out.println("PostConstruct init... ");
            }
    
            public void myDefineInitMethod() {
                System.out.println("自定义的初始化方法 init.");
            }
    
            @Override
            public void afterPropertiesSet() throws Exception {
                System.out.println("InitializingBean init");
            }
    
            @Override
            public String toString() {
                return "Person:[age:" + age + " name:" + name + "]";
            }
        }
    }
    

    执行结果:

    PostConstruct init... 
    InitializingBean init
    自定义的初始化方法 init.
    

    结论

    1. @PostConstructor 先初始化。
    2. InitializingBean#afterPropertiesSet 后初始化。
    3. @Bean #initMethod 最后完成初始化.

    相关文章

      网友评论

          本文标题:spring bean 初始化顺序

          本文链接:https://www.haomeiwen.com/subject/csgkjltx.html