zoukankan      html  css  js  c++  java
  • @PostConstruct和static静态块初始化的区别

    static blocks are invoked when the class is being initialized, after it is loaded. The dependencies of your component haven't been initialized yet. That is why you get a NullPointerException (Your dependencies are null) .

    Move your code to a method annotated with @PostConstruct. This will ensure that your code will run when all the dependencies of your component are initialized
    译文:static模块会被引入,当class加载后。你的component组件的依赖还没有初始化。这就是为什么你的代码块会报空指针异常。(你的依赖都是null)

    1,@PostConstruct 注解的方法在加载类的构造函数之后执行,也就是在加载了构造函数之后,

    为此,可以使用@PostConstruct注解一个方法来完成初始化,

    @PostConstruct注解的方法将会在依赖注入完成后被自动调用。

    2,执行优先级高于非静态的初始化块,它会在类初始化(类加载的初始化阶段)的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员。

    初始化失败:

    static {
    strategyMap.put(SYSTEM, applicationContext.getBean(XXX.class));
       System.out.println("初始化完成" + strategyMap.size());
    }

    初始化成功:

    @PostConstruct
    void init() {
    strategyMap.put(SYSTEM, applicationContext.getBean(XXX.class));
    System.out.println("初始化完成" + strategyMap.size());
    );
    }
  • 相关阅读:
    FSBQPIDMI总线的区别
    为什么PCI-e比SATA快这么多?
    chage命令管理用户口令时效
    账户管理groupadd groupmod groupdel usermod usermod userdel
    linux 里 /etc/passwd 、/etc/shadow和/etc/group 文件内容解释
    RPM常见用法
    智力逻辑题
    Android ROM 制作教程
    智能家居项目(2):项目project框架的搭建
    5999卖999!是噱头还是颠覆
  • 原文地址:https://www.cnblogs.com/hbuuid/p/13144611.html
Copyright © 2011-2022 走看看